中年C/C++编程笔记:C语言预编译指令—条件编译,零基础推荐收藏( 二 )


#ifdef ABC// ... codes while definded ABC#elif (CODE_VERSION &gt 2)// ... codes while CODE_VERSION &gt 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++编程难度很大 , 不妨和一些志同道合的小伙伴一起学习成长!


推荐阅读