#undef 什么意思
时间: 2024-11-29 08:36:08 浏览: 4
C语言之详解#ifdef等宏
`#undef` 是预处理器指令,在C/C++语言中,它的作用是取消(undefine)先前通过 `#define` 定义的标识符。这意味着如果之前有一个宏定义,如 `#define A 1`,那么 `#undef A` 会撤销这个定义,使得后续对该标识符的引用不再具有宏替换的效果。
举个例子[^1]:
```c
#define A 1
#define B 2
// 在这里,A 和 B 都会被替换成它们的定义
printf("%d\n", A); // 输出 1
// 使用 #undef 取消对 B 的定义
#undef B
// 在这里,B 不再被替换,而是按字面意义解析
printf("%d\n", B); // 输出 2 (因为未被宏替换)
```
要使 `#ifdef` 语句的结果为真(`TRUE`),通常的做法是在其前面定义相应的标识符,如:
```c
// 方法一:用宏定义标识符
#define IBM_PC 1
#ifdef IBM_PC
// 这里将会执行,因为 IBM_PC 已经被定义
printf("Running on an IBM PC.\n");
#endif
// 方法二:直接定义标识符
#define IBM_PC
#ifdef IBM_PC
// 这里也会执行,因为尽管没有赋值,但标识符已经被定义
printf("Running on an IBM PC.\n");
#endif
```
阅读全文