在mingw中使用#elif

时间:2015-04-10 22:59:33

标签: c++ visual-studio mingw

我目前正在将一些代码从Visual Studio移植到mingw,显然以下代码似乎在Visual Studio中工作但在Mingw中失败

#if defined(BATCH_TRIANGLESTRIP)
static const size_t VERT_COUNT = 4;
#elif defined(BATCH_TRIANGLELIST)
static const size_t VERT_COUNT = 6;
#elif //error here on mingw
#error BATCH_TRIANGLESTRIP or BATCH_TRIANGLELIST need to be defined
#endif

我的问题是上次#elif我查看了msdn的文档,显然他们没有条件的#elif语句。我想知道mingw中相当于上面的代码是

 #if defined(BATCH_TRIANGLESTRIP)
    static const size_t VERT_COUNT = 4; 
    #elif defined(BATCH_TRIANGLELIST)
    static const size_t VERT_COUNT = 6; 
    #else
    #error BATCH_TRIANGLESTRIP or BATCH_TRIANGLELIST need to be defined
    #endif

这是我用原始代码

得到的错误
error: #elif with no expression

1 个答案:

答案 0 :(得分:1)

#elif需要根据C ++标准(以及C标准)的常量表达式。无法诊断裸#elif是Visual Studio中的错误。

标准C ++中的等价物将使用#else而不是#elif。 Visual Studio和MinGW都应该正确处理 - 正如任何符合标准的编译器一样。