本篇博客讲述常见的条件编译指令,如#if、#elseif、#else、#ifdef、#if defined( )等
#if #elif #else
使用四个预处理指令来控制条件编译:
- #if:打开条件编译,其中仅在定义了指定的符号时才会编译代码。
- #elif:关闭前面的条件编译,并基于是否定义了指定的符号打开一个新的条件编译。
- #else:关闭前面的条件编译,如果没有定义前面指定的符号,打开一个新的条件编译。
- #endif:关闭前面的条件编译。
通俗点就是:与if、else if、else相似,只不过添加了#和用于结束的#endif
举例使用:
用法与if、else if、else相似。
若要更详细的理解该指令,接下来再VScode上演示:
输入指令gcc test.c -E -o test.i生成test.i文件,也即经过编译器预编译后产生的文件。详情请前往:
#ifdef
作用:通俗的讲,该指令可翻译为:如果宏定义了语句1则执行程序2。
使用:
同样输入指令gcc test.c -E -o test.i生成test.i文件
#define定义了M时,结果如下:
未定义M时,结果如下:
编译器会直接忽略相关语句。
#if defined( )
作用:判断是否被定义。
#if defined(symbol)
#endif
未定义M时:
定义了M时:
当然还有另一种用法:#if !define( )
嵌套指令
如if else一样,#if等也可以嵌套使用。
可以看出与{ }一样每一种指令都对应一个#endif,用法与if else相似。
如果有帮助的话,请三连 (⑅˃◡˂⑅)