#if 0 ... #endif的真实用途
来源:互联网 发布:手机淘宝不能指纹支付 编辑:程序博客网 时间:2024/05/09 06:28
在过去都没有去理会#if 的作用,今天突发奇想,开启编译器试一试。
很多人都知道,#if 0 ... #endfif的作用跟/*...*/的作用是一样的,就是注释,可是注释为什么不用注释符号/*就行了么?google了一下,大家都说是为了解决嵌套注释。如:
/*--------------------------------------------------------------------*/
#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++;
*/
}
/*----------------------------------------------------------------------*/
但是,#if就只有这个作用吗?有些书籍呼吁人们尽量少用它,那不是没有什么意义了?
其实不是的,在有些地方很常见到它,而且少不了它。当你见识过系统级的源代码就焕然大悟了。对,就是用于系统裁剪。
系统裁剪是针对系统的用途,对系统的源代码进行一下优化,减少不必要的功能。
#if是一个最经典的例子。如:
/*--------------------------------------------------------------------*/
#include“stdio.h”
#define TEST_2 1
int main()
{
int a=11;
/*这是一个外层注释
#if TEST_2
int *b=&a;
*b = 10;
#endif
a++;
*/
}
/*----------------------------------------------------------------------*/
如上面的例子,对于某些功能不需要,我们只需对于的功能TEST_2的宏定义改成0,然后重新编译就行了。当然一般宏定义是放在一个特定的文件(这里为了简单就写在一起),这样外面的人只需要更改那个文件所对应的值就行对系统进行裁剪而不需要关心具体代码,就行实现裁剪。
转自:http://blog.csdn.net/raining_heart/article/details/8019535
- #if 0 ... #endif的真实用途
- #if 0 ... #endif的真实用途
- #if 0 ... #endif的真实用途
- #if 0 ... #endif的真实用途
- #if 0 ... #endif的真实用途
- linux之#if 0 ... #endif用途
- #if 0 #endif的含义
- #if 0 .........#endif的使用
- #if 0 #endif 的用处
- #if 0 ....#endif的作用
- #if 0 #endif的作用
- “#if 0/#if 1 ... #endif”的作用
- #if 0/#if 1 ... #endif”的作用
- “#if 0/#if 1 ... #endif”的作用
- “#if 0/#if 1 ... #endif”的作用
- “#if 0/#if 1 ... #endif”的作用
- “#if 0/#if 1 ... #endif”的作用
- “#if 0/#if 1 ... #endif”的作用
- 深入理解C--Four 内存四区全局区剖析
- 用C#实现Delphi的TStringList类
- Eclipse+Maven命令创建webapp项目<三>
- datatable分页指南--前台分页和后台分页
- Oracle 归档日志 未完待续、、、
- #if 0 ... #endif的真实用途
- Iterator接口
- poj 3239 Solution to the n Queens Puzzle n皇后问题的构造解法
- MATLAB 实现 单纯形算法
- 杭电-5504GT and sequence
- mysql root用户没有超级权限或忘记密码
- 小马哥--高仿米4 TD01主板型号刷机拆机主板图与开机截面图 6752芯片 注意鉴别
- 关于linq的left jion连接
- Java多态之重写<一>