我目前正在将一些代码从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
答案 0 :(得分:1)
#elif
需要根据C ++标准(以及C标准)的常量表达式。无法诊断裸#elif
是Visual Studio中的错误。
标准C ++中的等价物将使用#else
而不是#elif
。 Visual Studio和MinGW都应该正确处理 - 正如任何符合标准的编译器一样。