#define 里加条件
时间: 2024-06-09 21:02:32 浏览: 179
在 C/C++ 中,#define 可以用来定义宏,通过宏定义可以将一个符号名指定为一个值或者一个表达式。除了简单的定义外,我们还可以在 #define 中加入一些条件判断,这样可以根据不同的情况对定义进行调整。常用的条件有以下几种:
1. #ifdef 和 #ifndef
这两个指令都是用来判断一个宏是否已经被定义过了。#ifdef 判断宏是否被定义过,如果被定义过则编译后面的代码,否则忽略后面的代码。#ifndef 判断宏是否没有被定义过,如果没有被定义过则编译后面的代码,否则忽略后面的代码。
2. #if、#elif 和 #else
这三个指令都是用来进行条件编译的。#if 后面可以跟表达式,如果表达式为真,则编译后面的代码;#elif 是 #if 的补充,表示如果上一个 #if 或 #elif 的表达式为假并且当前表达式为真,则编译后面的代码;#else 表示如果前面的条件都不成立,则编译后面的代码。
例如,下面的代码使用了 #ifdef 和 #ifndef 对宏进行了条件判断:
```
#ifndef PI
#define PI 3.14159265358979323846
#endif
#ifdef DEBUG
#define DEBUG_PRINT(x) printf(x)
#else
#define DEBUG_PRINT(x)
#endif
```
上面的代码中,如果 PI 这个宏没有被定义过,则会将其定义为 3.14159265358979323846;如果 DEBUG 这个宏被定义过,则会定义一个带有参数 x 的宏 DEBUG_PRINT,并使用 printf 输出 x,否则将 DEBUG_PRINT 定义为空。
阅读全文