博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
18.4 条件编译
阅读量:4494 次
发布时间:2019-06-08

本文共 1275 字,大约阅读时间需要 4 分钟。

18.4.1 #if 0…#endif的用途

  #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    1int main() {  int  a=11;/*这是一个外层注释#if  TEST   int *b=&a;                       *b = 10;#endif   a++;*/}

如上面的例子,对于某些功能不需要,我们只需对于的功能TEST的宏定义改成0,然后重新编译就行了。当然一般宏定义是放在一个特定的.h文件里,这样只需要更改那个文件所对应的值就可以对系统进行裁剪而不需要关心具体代码。

18.4.2 #ifndef、#define、#endif的用途

  看到很多程序的头文件写:

  #ifndef HeaderName_h

  #define HeaderName_h

    //这里面通常写各种宏定义、其他头文件的包含

  #endif

  这样做的目的:防止该头文件被重复引用。

  什么是“头文件被重复引用”?

  答:其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。

  比如:存在a.h文件#include "c.h",而b.cpp文件同时#include "a.h" 和#include "c.h",此时就会造成c.h被b.cpp重复引用。

  头文件被重复引用引起的后果:

  有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些。但是有些头文件重复包含,则会引起错误,比如:在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的),这种头文件重复包含会引起全局变量的重复定义


 

转载于:https://www.cnblogs.com/baixu/p/10392155.html

你可能感兴趣的文章
linux中tomcat内存溢出解决办法 分类: 测试 ...
查看>>
jQuery $.each用法
查看>>
[Luogu 3902]Increasing
查看>>
16个Web开发的IDE
查看>>
Java动态代理与Cglib库
查看>>
libevent源码深度剖析一
查看>>
SSH隧道技术简介
查看>>
PAT乙级1025
查看>>
找的好网站(macdow语法,扫描二维码,)
查看>>
浏览器插件开发遇到的问题
查看>>
EF Core 1.0 和 SQLServer 2008 分页的问题
查看>>
BZOJ1798: [Ahoi2009]Seq 维护序列seq
查看>>
PS--人物黄金色调
查看>>
开启ucosii的移植之旅
查看>>
推荐一款能写原创诗词的小程序
查看>>
Codeforces Round #496 (Div. 3) ABCDE1
查看>>
《程序是怎样跑起来的》第三章
查看>>
Jquery回到顶部效果
查看>>
开园第一笔
查看>>
Spark项目之电商用户行为分析大数据平台之(七)数据调研--基本数据结构介绍...
查看>>