以下是一些明显有缺陷的代码,我认为编译器应该发出诊断信息.但是,即使有我能想到的所有警告选项,它既不会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;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法制作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的人可以试试我的测试用例.