在C

时间:2017-07-29 11:36:29

标签: c enums conditional-compilation

我想使用下面的#ifdef。但我不确定它是否合适。因为我从编译器中获取错误。它像undefined identifier ENUM1一样。你有没有像这样使用#ifdef。 ???

typedef enum
{

#ifdef DEFINITION1
    ENUM1,  
#endif

#ifdef DEFINITION2
    ENUM2,          
#endif

#ifdef DEFINITION3
    ENUM3           
#endif
}teSomething;

感谢您的帮助...

1 个答案:

答案 0 :(得分:0)

您的代码编译得很好:https://godbolt.org/g/dRaR85

如果您想使用ENUM2,例如,您当然需要定义DEFINITION2,如果您想使用ENUM3,则必须定义DEFINITION3。因为否则#ifdef将永远为假,并且永远不会定义ENUM。

我从来没有像这样使用#ifdef,但我已经这样做了:

#ifdef VULKAN
enum Format{
    RGB = VK_RGB
};  
#elif DIRECTX
enum Format{
    RGB = DX12_RGB
};
#else
enum Format { // Empty enum for safety reasons.
};
#endif