条件编译
定义:按条件裁剪代码(预处理阶段)的机制
在介绍一些常见的条件编译指令之前,我们先简单连接一下翻译环境的构成
在这里我简单描述了一下编译环境的构成,我们即将要谈的条件编译,就是通过预处理阶段将一些语句加之条件,使之编译或者去掉。
下面我们谈谈几个简单的命令(为了方便,我们在linux系统下完成本次操作)
1.
#if 常量表达式
…
#endif
老规矩,举个例子
通过图中可以看到,在main函数上边还有很多代码,这就是预处理阶段所要做的工作,包括头文件展开等等,而我们这里主要关注这里的条件编译指令,我们定义了宏m=1,所以条件成立,则保留了printf语句,如果我们这里将m=0;我们再看
答案很明确,所以这里的第一个指令#if…#endif也就很显然了解了
在这里我们就发现它和我们的判断语句if语句很相似,所以我们就会出现下一个指令
2.#if 常量表达式
…
#elif 常量表达式
…
#else
…
#endif
这里也和if判断很相似,只不过本质区别就是,条件编译是在预处理阶段完成的,而if语句则不是
这里主要提一点就是,如果在判断中2个条件都为真,该执行谁了?
举例:
这里我们看到,当条件都为真时,还是执行的第一个语句,所以在这里就可以说明,在多个常量表达式都为真时,在执行完第一个条件为真的表达式后就不再向后执行了。
下面谈谈下一个指令
判断文件是都被定义
#if defined(file) (简写:#ifdef file) ->被定义
…
#endif
#if !defined(file) (简写:#ifndef file) ->未被定义
…
#endif
举例:
这里可以看到,我们并没有定义m,所以再执行#ifdef时,语句就自然不执行了,这里我们就会发现,这里我们如果让他执行就必须取加一个宏定义,不过,我们不仅可以再代码里定义宏,也可以通过命令行定义宏。
举例:
我们可用通过gcc file.c -D来定义宏,使得最后.c文件判定,宏存在,使之打印。
关于条件编译的常见简单指令今天就介绍到这里,还有很多有趣的指令,如过大家感兴趣,可以自行搜索,也可以和我交流哈。
本文地址:https://blog.csdn.net/weixin_46052798/article/details/107324749
上一篇: 如何选择好的变量名!
下一篇: 基于微信个人收款码的支付接口的实现与源码