2021-07-14

条件偏译#ifdef、#ifndif、#if的区别

编程中的部分内容希望只在满足一定条件的情况下才进行编译,这就是"条件编译"

条件编译的几种形式:
  (1)#ifdef

#ifdef 标识符
程序段1
#else
程序段2
#endif

💨当所指定的标识符已经被#define 命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2 。
其中#else 程序段2 部分可以没有。即

#ifdef 标识符
程序段1
#endif

  (2)#ifndef

#ifndef 标识符
程序段1
#else
程序段2
#endif

💨若标识符未被定义过则编译程序段1, 否则编译程序段2 。
  (3)#if

#if 表达式
程序段1
#else
程序段2
#endif

💨当指定的表达式值为真(非零)时就编译程序段1 ,否则编译程序段2 。

⭕ #ifdef x与#defined (x) 用法相似,而#ifndef x 和#if !defined(x) 用法相似(#if defined 取反就是#if!defined)。

  #ifdef与#if defined的区别
  #ifdef 与# if defined 的区别在于if defined 可以组成复杂的预编译条件,如下所示。

if defined (A) && defined (B)
<code>
#endif

💨表示只有A 和B 这两个宏定义都存在的时侯才编译代码,而# ifdef 只能判断单个宏定义,不能判断多个复杂条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值