以下是一些明显存在问题的代码,我认为编译器应该发出警告。但是,无论我使用哪些警告选项,包括-pedantic -Wall -Wextra
,gcc
和g++
都没有发出警告:
#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的人可以尝试一下我的测试用例。