【发布时间】:2010-08-17 15:49:54
【问题描述】:
在C/C++中有两种宏:
#define ABC /* usual */
和
#define FUNC(a) /*function-like*/
但是我怎样才能取消定义它们呢?
更新:那么取消定义“类常量宏”和“类函数宏”没有区别吗?
【问题讨论】:
-
如果我有 '#Define abc' 和 '#Define abc(A)',它们都将用一个 '#undef abc' 不定义?
-
没有宏重载这样的事情。在您第二个
#define或abc之后,第一个将消失。 -
@osgx:不,我很抱歉,但你错了。
-
第二个
#define ABC无效(除非新定义与旧定义相同,但不在此处)。一些狡猾的预处理器可能会允许它。其他人会给出警告或错误。 -
@osgx:也许你有一个不兼容的预处理器允许宏重载,但一个兼容的不会。我们无法真正回答有关不合规实现如何表现的问题。
标签: c-preprocessor