有没有办法让编译器在整数超出 enum
的“范围”时发出警告?例如,像这样:
enum Brothers {Snee, Snoo, Snum};
int main(void) {
enum Brothers k;
k = Snee;
k = 9; // compiler warning for an int outside [0,2] ?
}
答案 0 :(得分:1)
我在 GCC 上找不到与您想要的完全匹配的选项。有一些用于 GCC 的与枚举相关的编译器标志 可以使枚举的行为稍微好一些。例如,当比较不同类型的枚举是否相等时,-Wenum-compare
会给出警告:
enum fruit {
APPLE,
BANANA
};
enum colors {
RED,
BLUE
};
if (APPLE == RED) { // -Wenum-compare gives compiler warning here.
...
}
您正在寻找的选项似乎确实存在于 clang 上,但作为 -Wassign-enum
。
答案 1 :(得分:0)
从 10.2 版开始不适用于 gcc。有一个相关的 open enhancement request from 2002,但开发人员似乎没有兴趣实现它。
如果给定 -Wassign-enum
选项,clang 会对此发出警告:https://godbolt.org/z/zv8an5