取消定义类似函数的宏
在 C/C++ 中有两种类型的宏:
#define ABC /* usual */
und
#define FUNC(a) /*function-like*/
但是我如何取消它们的定义呢?
更新:那么取消定义“类常量宏”和“类函数宏”之间没有区别吗?
In the C/C++ there are 2 types of macro:
#define ABC /* usual */
und
#define FUNC(a) /*function-like*/
But how can I undefine them?
Update: So there is no difference between undefing "constant-like macro" and "function-like macro"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
#undef
“取消”之前的#define
。效果就好像您以前从未有过针对特定标识符的
#define
。请注意,#define 不考虑范围,因此最好仅在需要时使用它们。另请注意,一个宏标识符使用“通常”语法而另一个宏标识符使用“类似函数”语法并不重要。
#define ABC
和#define ABC(A)
都定义了一个名为ABC
的宏。如果两者都有,而无需#undef
ing 其中之一,则最新的一个将“覆盖”另一个。 (如果发生这种情况,某些编译器可能会发出警告。)#undef
"cancels" out a previous#define
. The effect is as though you never had a previous#define
for a particular identifier. Do note that#define
s do not respect scope, so it's best to use them only when you need to.Also note that it doesn't matter if one macro identifier uses the "usual" syntax while another uses a "function-like" syntax.
#define ABC
and#define ABC(A)
both define a macro namedABC
. If you have both, without#undef
ing one of them, the latest one "overrides" the other. (Some compilers may emit a warning if this happens.)