【问题标题】:How to make gcc report int to uint conversion如何使 gcc 报告 int 到 uint 的转换
【发布时间】:2016-04-13 11:15:22
【问题描述】:

如何让 gcc 编译器报告从整数到无符号整数的转换? 是否有我可以传递给 gcc 编译器的选项/参数来标记此类转换?

【问题讨论】:

  • 您指的是哪些转化? unsigned int u = 0; 也是无符号整数吗?

标签: c static-analysis lint


【解决方案1】:

使用标志:-Wconversion,它将警告有符号和无符号整数之间的转换可能会更改值。

https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

【讨论】:

  • @Morovaille 请发布您正在尝试编译的代码,并且该警告没有捕获它。
  • @AlexLop。它没有在 C++ 中捕获它。在 C 中它有效:我赞成答案。
  • 确实,如果不想抱怨 double->integer 等,应该使用-Wsign-conversion
  • @AnttiHaapala 看来-Wconversion 包含-Wsign-conversion
  • @Lundin 确实如此;我的观点是-Wconversion 抱怨的不仅仅是-Wsign-conversion,它应该会捕获所有signed->unsigned
【解决方案2】:

你可以使用-Wconversion:

-Wconversion 对可能改变值的隐式转换发出警告。 这包括......;有符号和无符号之间的转换,例如 无符号 ui = -1。

或者,更具体地说,-Wsign-conversion

-Wsign-conversion 对可能改变整数值符号的隐式转换发出警告,例如分配有符号整数表达式 到一个无符号整数变量。明确的演员表使 警告。在 C 中,-Wconversion 也启用了此选项。

参考:https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options

【讨论】:

    猜你喜欢
    • 2016-02-13
    • 2020-01-25
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    相关资源
    最近更新 更多