typedef int A;
typedef int B;
void foo(A arg){}
void main(void){
B wrongvar = 7;
foo(wrongvar);
}
这个结构是否应该按照标准返回一个警告/错误?最受欢迎的编译器呢?使用'typedef'来确保逻辑类型的安全
例如:我们有变量,代表千克和米,都是'int'类型。我们有一个功能,处理仪表。我们希望编译器捕捉错误,这与将千克含义变量变量传递给该函数有关。
我相信Ada处理顺利。现代C呢?
一个'typedef'给出了一个新的名称改为现有类型;它不会创建一个新的类型。替代名称也指相同类型。因此,所有'A','B','int'和'signed int'都可以传递给'foo(A arg)',而不会违反类型(其他类型可以转换为'int',比如'enum'类型,也可以传递而不引发警告)。 – 2013-04-28 17:21:06
'void main(void)'应该是'int main(void)' - 任何引用告诉你使用'void main(void)'是由不熟悉C的人编写的。 – 2016-03-02 21:06:03
@KeithThompson,c99似乎[支持](http://stackoverflow.com/a/9356660/1145760)这种使用'void main(void)'。误解是因为我没有正确地标记问题。 – Vorac 2016-03-07 08:16:12