以下是我认为编译器应该发出诊断的一些明显缺陷的代码。但无论是gcc
也不g++
确实,即使所有我能想到的警告选项:-pedantic -Wall -Wextra
我可以让GCC警告将太宽的类型传递给函数吗?
#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的人可以尝试我的测试用例。
啊哈 - 所以它只是4.2.4太“老”,使之发出警告就像它应该和4.3.2一样(我在这里做了一些假设,但我认为可以肯定地说,因为我使用的是Ubuntu,并且我看到了一些关于这个问题的说明,认为这是合理的只是一些固定在4.3以上。 – 2008-11-21 21:16:02