gpt4 book ai didi

c - 为枚举变量分配一个超出枚举范围的值时是否有警告?

转载 作者:行者123 更新时间:2023-12-05 08:31:13 25 4
gpt4 key购买 nike

我有一个使用 enum 作为参数的 C 函数,如下例所示:

typedef enum
{
AB,
CD
} A;

void f(A input)
{
// do something
}

int main(void)
{
// do something
f(-10);
// do something
}

如果我可以启用一个警告来分配一个值超出枚举范围的枚举变量?

最佳答案

有一个open bug for it在 GCC 错误数据库中。 GCC 似乎还没有包含这样的功能。有一个名为 -Wc++-compat 的选项会提示 - 在无数其他事情中,关于 any 整数被隐式转换为枚举类型。

一项相关功能刚刚进入了 GCC 存储库。在 GCC 主干中(但不在 9.2.1 中,它是 Ubuntu 19.10 的编译器),有一个开关 -Wenum-conversion,它会警告使用不相关的枚举值,但不会警告裸整数;即使用以下代码 it will warn about the latter function call, but not the former. :

typedef enum{ AB, CD } A;

typedef enum{ EF, GH } B;

void f(A input){
(void)input;
}

int main(void){
f(-10);
f(GH);
}

使用-Wenum-conversion 进行编译的诊断将是

<source>: In function 'main':
<source>:18:6: warning: implicit conversion from 'enum <anonymous>' to 'A' [-Wenum-conversion]
18 | f(GH);
| ^~

关于c - 为枚举变量分配一个超出枚举范围的值时是否有警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59880944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com