【发布时间】:2017-01-20 22:03:24
【问题描述】:
以下代码的结果是用 C 还是 C++ 定义的?
#define FOO
#define BAR defined(FOO)
#if BAR
int x = 1;
#else
int x = 2;
#endif
【问题讨论】:
-
请注意,这与答案中的解决方案(ifdef-define 方法)不同。你的是后期绑定的,这意味着
BAR可以扩展到代码的不同部分中的不同内容,具体取决于FOO的定义位置。示例:coliru.stacked-crooked.com/a/37e940a76f0fa896 -
Eww,我收回了。我希望这是试图在预处理器中降低 UB 的人们解决的问题之一,因为这相当不直观。
标签: c++ c c-preprocessor standards