【问题标题】:How to make gcc warn about narrowing function parameters如何使 gcc 警告缩小函数参数
【发布时间】:2018-01-05 19:31:11
【问题描述】:

下面的程序涉及一个隐式缩小的函数参数。信息可能会丢失。

void func(short) {}

int main()
{
    int i = 0x7fffffff;
    func(i);
}

如果我使用-Wall -Wextra 使用 gcc 编译这个程序(C 或 C++),我会收到没有警告

当然,这种行为通常会被认为是不可取的。

当这些缩小转换发生时,是否有一些 gcc 命令行参数会触发诊断消息?

【问题讨论】:

  • 选项:-Wconversion 将允许编译器输出有关此类问题的警告消息。
  • 我只是担心编译器可能会将0xffffffff 解释为-1,并以某种方式意识到该值适合短。这是一个远射。
  • 这个问题是关于gcc,而不是关于C++(这是一种不同的语言)所以请删除c++标签
  • MSVC 对象为其他对象:错误 C2055:预期的形式参数列表,而不是类型列表。这对于函数 prototype void func(short); 是可以的,但对于它的实现则不行,因为代码不能使用没有标识符的参数。这不是警告,而是错误。

标签: c++ c gcc compiler-warnings


【解决方案1】:

对 gcc/clang 使用 -Wconversion/W4 可用于 VC++。

online compiler

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-05-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多