如何让gcc警告缩小的函数参数

5
下面的程序涉及到一个隐式缩小的函数参数,可能会丢失信息。
void func(short) {}

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

如果我使用gcc编译这个程序(无论是C还是C++),并使用-Wall -Wextra,我将不会收到任何警告
当然,这种行为通常被认为是不可取的。
是否有一些gcc命令行参数可以在发生这些缩小转换时触发诊断消息?

1
选项-Wconversion将允许编译器输出有关此类问题的警告消息。 - user3629249
我只是担心编译器会将0xffffffff解释为-1,并且以某种方式意识到该值适合于short类型。这只是一个小概率事件。 - Mark Ransom
这个问题是关于gcc而不是C++(这是一种不同的语言),所以请删除c++标签。 - user3629249
MSVC反对某些东西:错误 C2055:期望形式参数列表,而不是类型列表。对于函数原型void func(short); 这将是可以接受的,但对于其实现来说则不然,因为代码不能在没有标识符的情况下使用参数。这不是一个警告,而是一个错误。 - Weather Vane
1个回答

9

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

在线编译器


1
请注意:这里还有一个-Wconversion wiki - Shafik Yaghmour

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接