常见预处理指令

本篇博客讲述常见的条件编译指令,如#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相似。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值