我的代码传递指向标量类型的指针,这些标量类型表示容易混淆的不同事物。我认为编译器可以帮助我解决这个问题。
这是一个测试程序:
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
$
有没有一种优雅的方法可以编写等效代码,但当我犯了如此可怕的错误时编译器会抛出错误?