之前只知道define可以用来相当于一个inline函数(define f(x,y)x+y)以及变量替换(define MAX 100000),今天又在逛gcc的include时看到这个,不过用法是
#define __need_error_t
与我之前了解的完全不同,这里是用来定义了一个有意义的常量,与一般与其他文件中的ifdefine 或ifndefine配合使用。
如在a.h中#define __debug_status
在b.c c.c等文件中可以有:
#ifdefine __debug_status
//debug
#endif
这样规定了一组debug动作,当a.h中有这句时执行。这样在调试时这样做,在正式版本中删去a.h中的那句#define __debug_status,之后的调试指令不会执行。
这样做的一个好处是 宏定义是预处理的,不会带入编译中,不像if 这样的分支指令总是生成指令。所以如果删去a.h中的宏,在编译时不会引入任何debug相关的操作指令,提高性能。
转载于:https://blog.51cto.com/crwonclown/554202