将预处理器指令作为语句的一部分
Having preprocessor directive as part of statement
我们转移到一个新的编译环境,突然间我开始看到这个错误 "expected expression" 这条语句:
enum {
PROJX,
PROJY,
PROJW
};
constexpr int PLATFORM =
#if defined(X)
PROJX
#elif defined(Y)
PROJY
#elif defined(W)
PROJW
#endif
;
错误指向最后一个分号。
这是否与特定的 c++11/14/17 标准有关?
没有标准改变这种行为。我的猜测是定义了三个中的 none,你最终得到:
constexpr int PLATFORM = ;
您可以通过添加 #else
和默认值 / #error
或在预处理器具有 运行.
后检查编译器的输出来对此进行测试
我们转移到一个新的编译环境,突然间我开始看到这个错误 "expected expression" 这条语句:
enum {
PROJX,
PROJY,
PROJW
};
constexpr int PLATFORM =
#if defined(X)
PROJX
#elif defined(Y)
PROJY
#elif defined(W)
PROJW
#endif
;
错误指向最后一个分号。
这是否与特定的 c++11/14/17 标准有关?
没有标准改变这种行为。我的猜测是定义了三个中的 none,你最终得到:
constexpr int PLATFORM = ;
您可以通过添加 #else
和默认值 / #error
或在预处理器具有 运行.