响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:c:tips:undef_command

#undef取消定义

使用#undef来取消一个宏的定义。

取消一个本来就没有定义的宏,不算错误。取消之后,可以使用#define给宏一个新的定义。

#undef中不进行宏扩展。

标准C允许使用#define重复定义同一个宏,但要求宏的定义是一样的,包括使用的符号和空白的位置,当然具体的空白字符可以不同。如:

#define NULL 0
#define FUNC(x) x+4
#define NULL /* null pointer */ 0
#define FUNC(x) x + 4
#define FUNC(y) y + 4

NULL的重定义是合法的,而FUNC的两个重定义都不合法。

在实践中,程序员不应该依赖这种重复定义,一个定义应该只出现在一个地方。

computer/c/tips/undef_command.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1