以下是一些明显有缺陷的代码,我认为编译器应该发出诊断信息。但两者都没有gcc
nor g++
确实如此,即使有我能想到的所有警告选项:-pedantic -Wall -Wextra
#include <stdio.h>
short f(short x)
{
return x;
}
int main()
{
long x = 0x10000007; /* bigger than short */
printf("%d\n", f(x)); /* hoping for a warning here */
return 0;
}
有没有办法制作gcc
and g++
对此发出警告?顺便说一句,您是否有另一个编译器在默认情况下或在相当常见的额外警告配置中对此发出警告?
注意:我使用的是 GCC(C 和 C++ 编译器)版本 4.2.4。
编辑:我刚刚发现gcc -Wconversion
可以解决这个问题,但同样的选择g++
不,我真的在这里使用 C++,所以我需要一个解决方案g++
(现在我想知道为什么-Wconversion
好像不是)。
Edit: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34389 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34389表明这可能会被修复g++ 4.4
...或许?我还不清楚这是否是同一问题和/或修复是否真的出现在该版本中。也许拥有 4.3 或 4.4 的人可以尝试我的测试用例。
使用 -Wconversion - 问题是当调用函数 f(short x) [不是 printf] 时从 long x 到短的隐式转换(转换),并且 -Wconversion 会说“从长到短的转换可能会改变值” ”。
..
编辑:刚刚看到你的笔记。 -Wconversion 对我产生警告,在 Linux 上使用 g++ 4.3.2...(在 Debian 上使用 4.3.2-1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)