gpt4 book ai didi

c - 如果在参数列表中使用了另一个类型定义的名称,则发出警告

转载 作者:太空狗 更新时间:2023-10-29 16:53:58 24 4
gpt4 key购买 nike

考虑一个大型项目,其中许多类型都是typedef,例如

typedef int age;
typedef int height;

一些函数获取这些类型的参数:

void printPerson(age a, height h) {
printf("Age %d, Height %d\n", a, h);
}

有没有办法在编译时发出警告,如果这些参数的类型错误,例如

age a = 30;
height h = 180;
printPerson(h, a); /* No warning, because a and h are both integers */

gcc(或一些静态代码分析工具)是否有在这种情况下发出警告的选项?

最佳答案

GCC 中没有对此的内置支持。

a feature request添加这个,基于稀疏 nocast 属性。但是,这尚未实现。不过,如果您可以使用 Sparse,则可以通过使用 __attribute__((nocast)) 标记每个 typedef 来做到这一点。

在 C++ 中,您可以通过创建包装类而不是 typedef 来做到这一点,然后简单地不为它们定义隐式转换。

关于c - 如果在参数列表中使用了另一个类型定义的名称,则发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30931720/

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