gpt4 book ai didi

c++ - 我可以让 GCC 在将太宽的类型传递给函数时发出警告吗?

转载 作者:可可西里 更新时间:2023-11-01 15:22:14 25 4
gpt4 key购买 nike

以下是一些明显有缺陷的代码,我认为编译器应该针对这些代码发出诊断。但是 gccg++ 都没有,即使有我能想到的所有警告选项:-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;
}

有没有办法让 gccg++ 对此发出警告?附带说明一下,您是否有另一个默认情况下或在相当常见的额外警告配置中对此发出警告的编译器?

注意:我使用的是 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) 被调用 [不是 printf] 时,从 long x 到 short 的隐式转换(转换),并且 -Wconversion 会说类似“从 long 转换为 short”可能会改变值(value)”。

..

编辑:刚看到你的笔记。 -Wconversion 对我发出警告,在 Linux 上使用 g++ 4.3.2...(在 Debian 上为 4.3.2-1)

关于c++ - 我可以让 GCC 在将太宽的类型传递给函数时发出警告吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/310108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com