当前位置: 移动技术网 > 网络运营>服务器>Linux > 条件编译

条件编译

2020年07月14日  | 移动技术网网络运营  | 我要评论

定义:按条件裁剪代码(预处理阶段)的机制
在介绍一些常见的条件编译指令之前,我们先简单连接一下翻译环境的构成在这里插入图片描述
在这里我简单描述了一下编译环境的构成,我们即将要谈的条件编译,就是通过预处理阶段将一些语句加之条件,使之编译或者去掉。
下面我们谈谈几个简单的命令(为了方便,我们在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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网