其他分享
首页 > 其他分享> > c – 我可以让GCC警告将过多的类型传递给函数吗?

c – 我可以让GCC警告将过多的类型传递给函数吗?

作者:互联网

以下是一些明显有缺陷的代码,我认为编译器应该发出诊断信息.但是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的人可以试试我的测试用例.

解决方法:

使用-Wconversion – 当调用函数f(short x)[not printf]时,问题是从long x到short的隐式转换(转换),而-Wconversion会说“从long到short转换可能会改变值” ”.

..

编辑:刚看到你的笔记. -Wconversion给我一个警告,在Linux上使用g 4.3.2 …(4.3.2-1 on Debian)

标签:c-3,c,gcc,g,compiler-warnings
来源: https://codeday.me/bug/20190923/1814182.html