仅在定义宏时才使用C ++ else语句

时间:2017-08-20 18:43:13

标签: c++ c++11 c-preprocessor c++14

我试图做一个if / else语句。但我想将else语句包装在#ifdef宏测试中。

if (check1)
{
...
}
#ifdef MACRO
else 
{...}
#endif
这是允许的吗?

3 个答案:

答案 0 :(得分:4)

预处理器在编译器之前运行。如果预处理器评估宏并生成有效的c / c ++代码(如您所包含的示例),则它是有效的用法。

答案 1 :(得分:3)

当然你可以,HashMap<String, Foo> = fooList.stream().collect(Collectors.toMap(Foo::getId, o -> o)) 。预处理器在编译之前对此进行评估,因此编译器只看到这个

C

但你不能/不应该这样做

if (check1)
{
...
}

答案 2 :(得分:2)

  这是允许的吗?

是的,这是有效的。你有什么疑问?