2011-05-27 132 views
2

这是一个简单的问题,但我没有在类似的代码中找到答案。基本上,我允许在#ifdef或#ifndef语句中有两个以上的#define吗?对于一个简单的例子:#ifdef或#ifndef中的#define#

#ifdef __GNUC__ 
     #define HELLO(x) x 
     #define WORLD(y) y 
    #else 
     #define __attribute__(x) 
     #define expect(expression, value) (expression) 
    #endif 

谢谢

回答

5

你当然是。这是完全有效的。

您可以根据需要在预处理器块中包含尽可能多的C语句或预处理器指令。

5

是的,你可以根据你想拥有尽可能多的预处理指令或#ifdef/#ifndef之间只是普通的C++语句... [#else] ... #endif块。

这是一个足够简单的问题,你可能应该在尝试之前尝试过。

+5

尽管在C中有足够的_unnspecified behavior_,_undefined behavior_和_implementation定义的行为,“只是尝试它”有时是错误的建议方法。 :) – sarnold 2011-05-27 23:17:05

+1

对于C本身,这是真的 - 但对于预处理器? – ThiefMaster 2011-05-27 23:44:57

+0

@ThiefMaster:C++中的变量宏? – 2011-05-28 10:39:16

相关问题