【问题标题】:get g++ to warn on promotions让 g++ 对促销发出警告
【发布时间】:2021-03-11 02:50:26
【问题描述】:

是否存在使 g++ 在升级时发出警告的编译器标志?我知道用于转换警告的 g​​++ 编译器标志(例如-Wconversion-Wsign-conversion),这是有道理的,因为转换可能非常危险,但我不知道类似的标志用于提升警告。我知道(认为?)促销通常应该是无害的,但在某些情况下,当意外促销出现时,我可能希望得到警告。我一直在谷歌上搜索,但到目前为止没有成功。

【问题讨论】:

  • 没有任何理由去“谷歌”获取 g++ 编译器标志列表。它们都记录在 gcc 的手册页中。 man gcc 为您提供所有编译器标志的完整列表。如果它不存在,它就不存在。
  • 谢谢,manpage 确实比 google 有用得多。我想我生来就将谷歌作为我最好和最坏的信息的主要来源,这是我的默认选择,不时流血的鼻子很好,然后记得先搜索联机帮助页^^。
  • 记住,谷歌不是你的朋友。它的目的是让您继续使用它来获取数据和广告收入。
  • 我知道并且我完全同意。问题是,它对于回答非常多的“主流”问题和帮助查找一般信息非常方便。

标签: c++ g++ compiler-warnings type-promotion


【解决方案1】:

您始终可以在 GNU 警告选项中进行搜索。

-Wdouble-promotion

当浮点类型的值被隐式提升为时发出警告 双倍。

【讨论】:

  • 谢谢,太好了。知道如何在其他情况下进行促销时发出警告,例如 short to int 或 long 或其他类似情况?我认为我也无法在联机帮助页中找到这些。我想这可能意味着它们不存在?
  • @Zorglub29 我在文档中找不到与整数提升警告相关的任何内容。你也不应该,它的定义很明确。
  • 我同意它的定义很明确,但这种事情可能会在没有意识到的情况下发生,并且我认为可能会产生一些后果。与“理论上,浮动到双倍应该没问题”相同。除非有问题的硬件在 16 位或 32 位或 64 位浮点上更快(我认为这就是这个双重提升标志的原因,对吧?)。对于 8 位微控制器,int 也是如此,我认为 8 位、16 位、32 位和 64 位可以产生很大的不同。
猜你喜欢
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多