c - 我如何让 gcc 告诉我传递了错误的标量类型?

标签 c gcc typedef

我的代码传递指向标量类型的指针,这些标量类型代表容易混淆的不同事物。我认为编译器可以帮助我解决这个问题。

这是一个测试程序:

typedef int type_a;
typedef int type_b;

type_a do_something_with_a(type_a* pa)
{
    return *pa + 3;
}

int main(void)
{
    type_b b = 0;
    do_something_with_a(&b);  /* This is a bug. */
    return 0;
}

我将 B 传递给一个只应该用 As 做事的函数,但 gcc 甚至没有发出警告:

$ gcc -Wall typesafe2.c 
$ 

有没有一种优雅的方法可以让我编写等效代码,但当我犯了如此可怕的错误时让编译器抛出错误?

最佳答案

代替 typedef int type_a; 等,使用 typedef struct { int value; } type_a;

关于c - 我如何让 gcc 告诉我传递了错误的标量类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201142/

相关文章:

c - if 语句中的字符串比较会生成一些警告

c 试图将时间和日期传递给另一个函数

c - typedef时重命名变量?

c - 将结构传递给函数 C

c - C中的数组排序

python - 在 Python 应用程序中调用自定义 C 子例程

c++ - 段错误的发生取决于gcc编译命令中的cpp序列?

gcc - -lgcc_s 和 gcc 的区别

c - 通过ARM(使用GCC)获取C中汇编标签的地址

c++ - header 与 typedef 之间的循环依赖