快速理解typedef及其导致的const陷阱
C/C++中的重命名常用的重命名方式从最简单的理解入手,C/C++中的typedef和宏定义都是能够完成对一个变量或者一段代码进行重命名,以便程序能够识别新的名称,使得程序更易读。例如将int重命名为Int32来标注不同位数系统中的类型长度,或者用宏定义来设置一些常用语句(比如:比较大小函数)。以及用typedef重命名函数指针以达到更清晰得理解回调函数的作用等等。
#define NKEYS (sizeof keytab / sizeof(struct key))
#define MAX(a, b) ((a)>(b)?(a):(b))
#define bool char
typedef bool (*OnClick)(int,int);
有些人会直接将宏定义和typedef理解成同一个概念。但实际上两者区别很大,如果用宏定义的方式去理解typedef,就容易掉入const限定符的陷阱。我个人认为抛开这个重命名的功能不谈,只从重命名后分配内存的角度来分析typedef,就更容易将其与宏定义区分开。...
SVN使用异常总结
What for在这里总结一些工作时使用svn遇到的一些异常,防止时间过长导致issue文档分散或者自己忘掉,方便日后查找。
异常情况svn 命令行文件出现 !,但svn的所有操作均正常
使用svn --version检查svn客户端及服务器的版本,是否对应一致。不一致可能会导致所有操作均可进行,但.svn在对比文件差异时出现文件遗失的警告。需要手动对svn的客户端或服务器进行降svn版本操作(使用官方提供的python脚本,Mac下可以使用brew管理)官网对于此种情况的类似解释,原因如下:
This client is too old to work with working copy或
多Git账号多仓库的ssh_config访问配置
引言在进公司实习之前,虽然为了方便存储自己的练习代码,配置了Github的ssh,但电脑上的ssh也只有自己的私人账户,而且刚进公司的时候项目组的大部分东西都还在svn上,两者不冲突不打架,就没怎么考虑过config配置ssh的问题。最近大规模迁移到gitlab和独立域名的时候,查看推送的时候发现显示推送对象是私人账号,而且有时会出现Permission Denied的情况,于是便开始补课ssh-config,总结成这篇博客,希望可以加深自己的印象。
生成公私钥并配置到Github账户防止覆盖地以邮箱生成rsa类型的公私钥ssh-keygen -t rsa -C "emailaddr