取消定义类似函数的宏

时间:2010-08-17 15:49:54

标签: c-preprocessor

C / C ++中有两种类型的宏:

 #define ABC   /* usual */

und

 #define FUNC(a)  /*function-like*/

但我怎么能取消他们呢?

更新:那么“不变的宏”和“类似函数的宏”之间没有区别吗?

2 个答案:

答案 0 :(得分:16)

#undef ABC
#undef FUNC

#undef "cancels" out a previous #define。效果就好像您从未有过特定标识符的先前#define。请注意#define不尊重范围,因此最好只在需要时使用它们。

另请注意,如果一个宏标识符使用“通常”语法而另一个使用“类似函数”语法则无关紧要。 #define ABC#define ABC(A)都定义了一个名为ABC的宏。如果你有两个,没有#undef其中一个,最新的一个“覆盖”另一个。 (如果发生这种情况,某些编译器可能会发出警告。)

答案 1 :(得分:12)

#undef ABC
#undef FUNC