以下是一些明显有缺陷的代码,我认为编译器应该对其进行诊断。但是,即使有我能想到的所有警告选项,gcc
也没有: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
警告g++
?附带说明一下,您是否有另一个编译器在默认情况下或在相当常见的额外警告配置中对此发出警告?
注意:我使用的是 GCC(C 和 C++ 编译器)版本 4.2.4。
编辑:我刚刚发现它gcc -Wconversion
可以解决问题,但相同的选项g++
不会,而且我真的在这里使用 C++,所以我需要一个解决方案g++
(现在我想知道为什么-Wconversion
似乎不是这样)。
编辑:http ://gcc.gnu.org/bugzilla/show_bug.cgi?id=34389建议这可能会在g++ 4.4
......也许?我还不清楚它是否是同一个问题和/或修复是否真的出现在那个版本中。也许有 4.3 或 4.4 的人可以试试我的测试用例。