mingw中#elif的使用

Use of #elif in 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

#elif 需要一个符合 C++ 标准(以及 C 标准)的常量表达式。无法诊断裸机 #elif 是 Visual Studio.

中的错误

标准 C++ 中的等效项将使用 #else 而不是 #elif。 Visual Studio 和 MinGW 都应该正确处理这个问题——任何符合标准的编译器都应该如此。