常见预处理指令

本篇博客讲述常见的条件编译指令,如#if、#elseif、#else、#ifdef、#if defined( )等


#if #elif #else

使用四个预处理指令来控制条件编译:

  • #if:打开条件编译,其中仅在定义了指定的符号时才会编译代码。
  • #elif:关闭前面的条件编译,并基于是否定义了指定的符号打开一个新的条件编译。
  • #else:关闭前面的条件编译,如果没有定义前面指定的符号,打开一个新的条件编译。
  • #endif:关闭前面的条件编译。

通俗点就是:与if、else if、else相似,只不过添加了#和用于结束的#endif
举例使用:
image.png
用法与if、else if、else相似。
若要更详细的理解该指令,接下来再VScode上演示:
输入指令gcc test.c -E -o test.i生成test.i文件,也即经过编译器预编译后产生的文件。详情请前往:
image.png

#ifdef

作用:通俗的讲,该指令可翻译为:如果宏定义了语句1则执行程序2。
使用:
image.png
同样输入指令gcc test.c -E -o test.i生成test.i文件
#define定义了M时,结果如下:
image.png
未定义M时,结果如下:
image.png
编译器会直接忽略相关语句。

#if defined( )

作用:判断是否被定义。

#if defined(symbol)
#endif  

未定义M时:
image.png
定义了M时:
image.png
当然还有另一种用法:#if !define( )
image.png

嵌套指令

如if else一样,#if等也可以嵌套使用。
image.png
可以看出与{ }一样每一种指令都对应一个#endif,用法与if else相似。

如果有帮助的话,请三连 (⑅˃◡˂⑅)

猜你喜欢

转载自blog.csdn.net/weixin_74837727/article/details/130034338
今日推荐