目录
定义
实例
无编译参数
带编译参数
总结
定义
预编译又称为预处理,是做些代码文本的替换工作。
处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等
就是为编译做的预备工作的阶段
主要处理#开始的预编译指令
实例
在开发的过程,可能会遇到这样的情况,就是不同版本可能功能会有删除和添加,如果在代码做编写逻辑判断这样是可以满足要求的,但是这样做会出现不必要的判断。
因此我们可以利用预编译宏定义来完成,删除或者添加功能。
代码如下:
#includeint main(int argc,char**args){ #ifndef TEST_FUN printf("hello new function!rn"); #endif printf("hello world!rn"); return 0; }
我们可以看到在代码中使用宏#ifndef ... #define....#endif 这个语句。
无编译参数
定义了TEST_FUN这个宏,如果在编译的时候不添加任何参数,表示默认使用hello new function 功能。看看效果
编译如下:
gcc main.c -o main
运行结果如下:
可以看到默认使用了新功能。
带编译参数
编译如下使用-DTEST_FUN:
gcc main.c -o main -DTEST_FUN
运行结果如下:
hello world!
总结
该方案对于代码功能相对集中,并且功能分支不多的项目是一个不错的方案。减少不必要的判断,但是无法动态的添加功能。比如:日志功能使用该方式,那么就不能通过设置变量的方式来修改日志是否输出。具体的使用需要个人根据自己的项目来进行使用。



