【发布时间】:2012-02-23 19:42:21
【问题描述】:
在许多 C 和 C++ 文件中,我都看到过这样的宏:
#ifdef X
#undef X // no statements in between
#endif
我觉得,简单写就够了:
#undef X
如果未定义宏 X,则 #undef 应该无效。
如果我只想取消定义一个宏,是否可以ok放置独立的#undef?无论如何,这会使编码实践变得糟糕吗?
【问题讨论】:
-
我同意;我只是快速搜索了一下,这种行为似乎在主要编译器中是一致的。也许有些历史上不允许您取消定义未定义的宏?不确定。我会说它可能是安全的。
-
在我看来,它本身就很好
-
我想我记得至少 MSVC 对我犯了错误。
-
@Xeo,也许在过去。 MSDN 认为从 VS2005 开始就可以了。
-
@anthony:文档实际上说它早在 VS 2003 就有效。他考虑的可能是 VC 6,因其缺乏标准合规性而臭名昭著。
标签: c++ c coding-style macros undef