ifdef的使用

本文介绍了C++中ifdef的多种用途,包括防止头文件重复包含、自由选择编译代码段、使用#if等预处理指令,以及在项目版本控制中的应用。通过设置宏定义,可以在debug和release等不同配置下灵活控制代码行为。

基础用法:

#ifdef Something//还有#ifndef
//即使下面包含的是带#的预处理指令,也会受ifdef的影响(有/无效)
...
#elif defined(Something2)
...
#else//else和elif下面不用再写#define
...
#endif//就是看指定的标识是否存在,若存在则ifdef包含的代码块有效,否则反之

1 防止头文件重复包含

#ifndef _HEADER_H_//要全大写
#define _HEADER_H_//通常ifndef都和define配合使用,防止后面再判断到相同的ifdef不通过
...
#endif

2 自由指定某段代码是否编译(有效)

#define Something//define后可啥也不加,只表示此表示存在
#ifdef Something//若前面define了这个标识,则下面的内容有效
#define Something//此处也要写标识
...
#endif

3 #if等的使用

1 #if defined(Something)//#ifdef=#if defined(...);#ifndef=#if !defined(...)
...
#endif
2 #if Macro1==100//表达式中只能用宏,不能用变量(尚不确定)
...
#endif
3 #ifdef Sth1
#undef Sth2//取消某宏的定义

4 妙用

//In HeaderFile1
#define Sth
#define UseSth 1
//In File2
#include"HeaderFile1"
#ifdef Sth
#if UseSth
...
#endif//想查询在某个文件中是否有标识符Sth,include该文件并用ifdef来判断
//define多行
#define MAIN int main()\//在每一行末尾加上反斜杠即可
{\
}

5 版本控制
在项目设置中添加macro,就不用在代码中写#define了
也可以更改不同的配置,使不同配置下预先定义的macro不同(如debug和release)
在这里插入图片描述

#if MyMacro==1//假设在debug配置下设置了MyMacro,则此处if满足条件
...
#else MyMacro==0//release中无MyMacro,无效
...
#endif
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值