编码中0的技巧

来源:互联网 发布:数据为王颠覆营销 编辑:程序博客网 时间:2024/05/16 09:32
【技巧一】
#if 0//Code here#endif
用于方便地注释不愿意舍弃的代码,将0改为1又可以重新启用这部分代码。
ps:频繁地注释和启用某一段代码进行某项测试任务时,相当有用。

【技巧二】
sleep(0);
用于让出CPU时间片。

【技巧三】
do{//Code here}while(0);
a、用于出错资源释放处理,减少代码冗余,避免使用goto语句;
b、用于宏函数定义中,提高健壮性,例如:
#define SAFE_FREE(p) do{free(p); p = NULL; }while(0)#define SAFE_FREE(p) {free(p); p = NULL; }
前者比后者好,是因为C/C++程序员习惯在每个语句后加‘;’,如果SAFE_FREE(p)被定义为后者,则如下代码编译过不了:
if(NULL != p)SAFE_FREE(p);else dosomething; //Compile error!
ps:虽然建议if-else每个分支都加大括号,但是并不能保证人人都这么做!

【技巧四】
//文件信息列表头结构typedef struct {ulong ulOffset;ulong ulFileSize;}ET_FILE_INFO;typedef struct{    uint uiProgramNum;    uint uiParaNum;    ET_FILE_INFO tFileInfo[0]; //所谓的柔性数组成员}ET_FILE_INFOHEAD;
ps:柔性数组成员允许结构末尾包含一个大小可变的数组,这个在形式上长度为0的数组不在运算符sizeof的计算范围之内。


【技巧五】
待补充……