C ++多行#if

时间:2019-07-05 08:06:16

标签: c++ preprocessor-directive

一段时间以来,我一直在尝试使用Google进行搜索,但是如果可以完全解决,我似乎找不到任何明确的答案。

我想知道是否可以用与这种类型的if类似的方式在C ++中执行MultiLine #if语句

if (
   1 == 1 ||
   2 == 2 ||
   3 == 3
) {
   cout << "True\n";
}

我一直希望有类似的东西(我知道这是绝望的错误)

#if
   1 == 1 ||
   2 == 2 ||
   3 == 3
#then
   cout << "True\n";
#else
   cout << "False\n";
#endif

4 个答案:

答案 0 :(得分:6)

是的。带有续行:

#if \
   1 == 1 || \
   2 == 2 || \
   3 == 3
   cout << "True\n";
#else
   cout << "False\n";
#endif

答案 1 :(得分:6)

#if \
   1 == 1 || \
   2 == 2 || \
   3 == 3
   cout << "True\n";
#else
   cout << "False\n";
#endif

反斜杠-换行符组合在预处理的很早就被剥离了,甚至在标记输入之前也是如此。您可以使用它在多个物理行之间分散预处理器指令。

哎呀,理论上你甚至可以做到

#i\
f 1 == 1 |\
| 2 == 2 || 3 =\
= 3

但是您的同事可能会对您不高兴。

答案 2 :(得分:2)

正确的使用方法如下。可以在当前行的末尾使用\将每个进行处理的宏写入多行。 cpp中没有#then关键字:)

    #if \
       1 == 1 || \
       2 == 2 || \
       3 == 3
       cout << "True\n";
    #else
       cout << "False\n";
    #endif

答案 3 :(得分:2)

我认为解决此问题的方法是在行'\'的末尾使用字符转义

 #if \
   1 == 1 || \
   2 == 2 || \
   3 == 3
   void foo(){}
#else
   void bar(){}
#endif