代码中使用的宏定义如何通过编译选项来设置
之前在看一个开源项目的源码过程中遇到了一些宏定义,全局搜索了此宏定义的位置,但是最终并没有从某个 “.h”
文件中找到相关的定义,中间有出现了一些疑惑,为什么没有在 “.h”
文件中找到它的定义,后来发现这个宏除了在代码中出现使用,也有出现在Makefile文件中,它是以编译选项的方式添加的,之后自己写了个小的demo做了个测试。
测试相关代码:
#include <stdio.h>
int main(){
#ifdef OUT_STRING
printf("out:%s\n",OUT_STRING);
#else
printf("not define OUT_STRING\n");
#endif
return 0;
}
带宏参数编译:gcc test.c -o test -DOUT_STRING=“good”
结果:
[root@localhost ~]# gcc test.c -o test -DOUT_STRING=\"good\"
[root@localhost ~]# ./test
out:good
不带宏参数编译:gcc test.c -o test
结果:
[root@localhost ~]# gcc test.c -o test
[root@localhost ~]# ./test
not define OUT_STRING