C预处理器宏嵌入#ifdef #endif

时间:2014-03-21 20:30:33

标签: macros

你能嵌入#ifdef和#endif吗?

例如:

#ifdef B
    run1();
    #ifdef C
        run2();
    #endif
#endif

只有在定义了B和C时才会出现所需的结果run2()

1 个答案:

答案 0 :(得分:2)

是的,你可以。

See the official GCC documentation for details

  

条件内的受控文本可以包括预处理指令。只有条件成功时才执行它们。 您可以在其他条件组中嵌套条件组,但它们必须完全嵌套。换句话说,'#endif'总是匹配最近的'#ifdef'(或'#ifndef'或'#if')。此外,您无法在一个文件中启动条件组,而在另一个文件中将其结束。