gpt4 book ai didi

c - 强制 C 编译器产生整数缩小警告

转载 作者:太空狗 更新时间:2023-10-29 17:21:55 25 4
gpt4 key购买 nike

让我们考虑以下示例:

#include <stdio.h>

void func(unsigned char c) {
printf("0x%x\n", c);
}

int main() {
int val = 0x11223344;
func(val);
}

据我所知,没有办法我可以强制gccclang,在语句 上显示警告func(val) 关于缩小 int -> unsigned char 将在那里发生。甚至不通过使用 -Wall -Wextra -pedantic 进行编译。该问题主要针对 C 代码,但也值得在讨论中包括 C++ 世界(请参阅下面的注释)。

C++ 注释

我很清楚 C++ 中存在一种使用统一初始化语法的解决方法:

func({val});

但这没有解决我的问题,因为:

  • 对于已有的代码,需要修改
  • 对于新代码,需要在所有地方使用 {}

问题一

在编译 CC++ 代码时,是否有任何神秘的选项可以实现这一点?我也可以使用非标准解决方案,只要它适用于 gccclang 并且它不需要 需要更改代码。 注意:我不是在寻找棘手的 C++ 解决方案,该解决方案使用带有或不带有包装原始类型的宏的自定义整数类型。我正在寻找类似命令行选项或 pragma 的东西。同样,问题主要针对 C 代码,但也值得探索任何 C++ 解决方案。

问题2(回退)

如果事实证明(正如所怀疑的那样)不存在这样的解决方案,我会非常想知道为什么。我不敢相信这样的选择从未被考虑过实现。应该有一份反对它的合理论据 list ,我只是想不出。但问题是该选项可能只是非标准选项,如 -fwrapv,人们只能在真正需要的地方使用它。

最佳答案

-Wconversion 是您要查找的内容吗?

您可以看到行为 here , 有很多案例。

关于c - 强制 C 编译器产生整数缩小警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54258114/

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