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 都应该正确处理这个问题——任何符合标准的编译器都应该如此。
我目前正在将一些代码从 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 都应该正确处理这个问题——任何符合标准的编译器都应该如此。