中年C/C++编程笔记:C语言预编译指令—条件编译,零基础推荐收藏( 二 )
#ifdef ABC// ... codes while definded ABC#elif (CODE_VERSION > 2)// ... codes while CODE_VERSION > 2#else// ... remained cases#endif // #ifdef ABC
#ifdef用于判断某个宏是否定义 , 和#ifndef功能正好相反 , 二者仅支持判断单个宏是否已经定义 , 上面例子中二者可以互换 。 如果不需要多条件预编译的话 , 上面例子中的#elif和#else均可以不写 。
4. #if、#elif、#else、#endif
#if可支持同时判断多个宏的存在 , 与常量表达式配合使用 。 常用格式如下:
#if 常量表达式1// ... some codes#elif 常量表达式2// ... other codes#elif 常量表达式3// ......#else// ... statement#endif
常量表达式可以是包含宏、算术运算、逻辑运算等等的合法C常量表达式 , 如果常量表达式为一个未定义的宏, 那么它的值被视为0 。
#if MACRO_NON_DEFINED // 等价于#if 0
在判断某个宏是否被定义时 , 应当避免使用#if , 因为该宏的值可能就是被定义为0 。 而应当使用#ifdef或#ifndef 。
注意: #if、#elif之后的宏只能是对象宏 。 如果宏未定义 , 或者该宏是函数宏 , 则编译器可能会有对应宏未定义的警告 。
五、总结 本文主要介绍c语言中有关于编译的指令 。 撰写本文的目的在于理清相关概念调用 , 在后续预编译使用时可以找到最合适的指令及格式 。 比如同时满足多个宏定义的预编译、多分支预编译、#elif和#else指令的配合等 。
自学C/C++编程难度很大 , 不妨和一些志同道合的小伙伴一起学习成长!
推荐阅读
- 中年美国寸土寸金,为何要在纽约建立林则徐广场?原因很简单
- 中年北斗系统发言人答封面新闻:北斗定位精度最好可达1点几米
- 中年检测设备行业政策及环境
- 中年元春回府省亲为何会在夜晚进行?原来其中大有文章
- 中年北斗三号全球服务可用性达99%以上,全球范围定位精度优于10米
- 锁定|起底电信诈骗“杀猪盘”:锁定中年女性,先培养感情再骗钱
- 中年做了几道硬菜,孩子们的胃口很大,可以无限量地吃
- 中年你吃火锅,我吃火锅底料——做的川味慢烤牛肋排
- 教育|每一位中年女性,都是“乘风破浪的姐姐”
- 时尚@人到中年,一味扮嫩早就行不通了,这几个颜色才时尚高级
