#if 0 ... #endif的作用跟/*...*/的作用是一样的,就是注释!
可是为什么不用注释符号/*?
答:为了解决嵌套注释。如下:
#include“stdio.h” int main(){ int a=11; /*这是一个外层注释 /* int *b=&a; //这是一个内层代码注释 *b = 10; */ a++; */ }
上面的程序编译后发现缺少了一个注释符号,因为注释符头 " / * "是根据最近结束符 " */ "来判断注释的区域的,但是一但内嵌了就会发现错误。所以就使用了#if 0。如下:
#include“stdio.h” int main(){ int a=11; /*这是一个外层注释 #if 0 int *b=&a; //这是一个内层代码注释 *b = 10; #endif a++; */ }
在有些地方很常见到它,而且少不了它。当你见识过Linux系统的源代码就明白了。
#if 0…endif主要用于系统裁剪。
系统裁剪是针对系统的用途,对系统的源代码进行一下优化,减少不必要的功能。
#include“stdio.h” #define TEST 1 int main(){ int a=11; /*这是一个外层注释 #if TEST int *b=&a; *b = 10; #endif a++; */ }
如上面的例子,对于某些功能不需要,我们只需对于的功能TEST的宏定义改成0,然后重新编译就行了。当然一般宏定义是放在一个特定的.h文件里,这样只需要更改那个文件所对应的值就可以对系统进行裁剪而不需要关心具体代码。
原文:https://www.cnblogs.com/baixu/p/10392155.html