gpt4 book ai didi

c - 在 GCC 中分配或执行具有不同枚举类型的算术时如何发出警告?

转载 作者:太空狗 更新时间:2023-10-29 16:32:46 25 4
gpt4 key购买 nike

虽然我知道这是不区分枚举类型的有效 C。

GCC 确实有 -Wenum-compare(我正在使用)并且按预期工作。

我尝试使用 -Wconversion 但这没有任何区别。

如何赋值和算术运算符(+/-/&/|...等)也会产生警告? (赋值,或和...等等)

{
enum Foo f = SOME_VALUE;
enum Bar b = SOME_OTHER_VALUE;

if (f != b) {
/* this warns! */
}

f = b; /* <-- how to warn about this? */
f |= b; /* .. and this? */

}

注意事项:

  • 切换到 C++ 不是一个选项(如其他答案中所建议的那样)
  • This question密切相关,但它不是重复的,因为它是关于传递参数而不是算术。

最佳答案

根据 this answer ,只有 clang 支持所需的行为。

some approaches在 C 中模拟强类型枚举,但它们似乎有各种限制。

关于c - 在 GCC 中分配或执行具有不同枚举类型的算术时如何发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45319942/

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