什么是条件编译

(3) 2024-05-07 18:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说什么是条件编译,希望能够帮助你!!!。

定义:按条件裁剪代码(预处理阶段)的机制
在介绍一些常见的条件编译指令之前,我们先简单连接一下翻译环境的构成什么是条件编译_https://bianchenghao6.com/blog__第1张
在这里我简单描述了一下编译环境的构成,我们即将要谈的条件编译,就是通过预处理阶段将一些语句加之条件,使之编译或者去掉。
下面我们谈谈几个简单的命令(为了方便,我们在linux系统下完成本次操作)
1.
#if 常量表达式

#endif
老规矩,举个例子
什么是条件编译_https://bianchenghao6.com/blog__第2张
通过图中可以看到,在main函数上边还有很多代码,这就是预处理阶段所要做的工作,包括头文件展开等等,而我们这里主要关注这里的条件编译指令,我们定义了宏m=1,所以条件成立,则保留了printf语句,如果我们这里将m=0;我们再看
什么是条件编译_https://bianchenghao6.com/blog__第3张
答案很明确,所以这里的第一个指令#if…#endif也就很显然了解了
在这里我们就发现它和我们的判断语句if语句很相似,所以我们就会出现下一个指令
2.#if 常量表达式

#elif 常量表达式

#else

#endif
什么是条件编译_https://bianchenghao6.com/blog__第4张
这里也和if判断很相似,只不过本质区别就是,条件编译是在预处理阶段完成的,而if语句则不是
这里主要提一点就是,如果在判断中2个条件都为真,该执行谁了?
举例:什么是条件编译_https://bianchenghao6.com/blog__第5张
这里我们看到,当条件都为真时,还是执行的第一个语句,所以在这里就可以说明,在多个常量表达式都为真时,在执行完第一个条件为真的表达式后就不再向后执行了。
下面谈谈下一个指令
判断文件是都被定义
#if defined(file) (简写:#ifdef file) ->被定义

#endif

#if !defined(file) (简写:#ifndef file) ->未被定义

#endif
举例:
什么是条件编译_https://bianchenghao6.com/blog__第6张
这里可以看到,我们并没有定义m,所以再执行#ifdef时,语句就自然不执行了,这里我们就会发现,这里我们如果让他执行就必须取加一个宏定义,不过,我们不仅可以再代码里定义宏,也可以通过命令行定义宏。
举例:什么是条件编译_https://bianchenghao6.com/blog__第7张
我们可用通过gcc file.c -D来定义宏,使得最后.c文件判定,宏存在,使之打印。
关于条件编译的常见简单指令今天就介绍到这里,还有很多有趣的指令,如过大家感兴趣,可以自行搜索,也可以和我交流哈。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复