This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CODECOMPOSER:在使用枚举时、CCS 警告"无符号整数与零&quot 的无意义比较;

Guru**** 1826070 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1403232/codecomposer-ccs-is-warning-about-pointless-comparison-of-unsigned-integer-with-zero-when-using-an-enum

器件型号:CODECOMPOSER

工具与软件:

您好!

我想使用宏检查枚举边界、而 CCS 提升了#188-D 警告。  

下面是对我的问题的简化:

由于枚举可以是有符号的或无符号的(在 C23中、我们可以修复此问题、但我认为 CCS 仅支持 C11)、因此我不明白为什么会生成此警告。

这是编译器错误吗? 是否有办法让编译器快乐?  

此致、
Gabriel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gabriel:

    该消息是来自编译器还是来自 Eclipse CDT 静态代码分析校验器? 您能否提供包含警告的"Problems"视图的屏幕截图?

    谢谢

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ki:

    感谢您的回答。

    根据我对 CCS 的理解、这来自编译器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 我将该线程提请编译器专家注意。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ki:  

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    警告诊断正确。  请搜索 TI ARM 编译器手册 中标题为 枚举类型大小的子章节。  您将了解到基础的整数类型 MyEnum_t 正弦值 unsigned char .  宏 以内 构成此比较: my_value >= my_enum_a .  下面是与的比较 unsigned char 变量>= 0。  每个 unsigned char 始终大于或等于0。  因此、编译器会优化这种比较。  不执行。   

    至于如何修复、这取决于您 对此代码的意图。  也许抑制诊断是有道理的。 要了解如何执行该操作、请在同一手册中搜索标题为" 了解诊断消息"的子章节

    谢谢。此致、

    -George.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您只是使用枚举作为枚举、而不使用任何东西的整数值、则只需从1开始。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 的回答。

    我知道这不是一种不必要的行为;即使我觉得它不直观。
    因此、我将结束该问题。

    对于发现该问题的人、我更喜欢的解决方案是细分问题  >=  > || ==. 

    通过这样做, 编译器没有意识到当 MIN 是时,组合总是正确的 0

    #define IS_WITHIN(number_, min_, max_)                 (((number_) > (min_) || (number_) == (min_)) && (number_) <= (max_))
    

    此致、

    Gabriel