typedefs
没有强类型的原因是什么?有什么好处我看不到,还是由于向后兼容?见这个例子:
typedef int Velocity;
void foo(Velocity v) {
//do anything;
}
int main() {
int i=4;
foo(i); //Should result in compile error if strongly typed.
return 0;
}
我不是要求变通方法来获得强类型数据类型,而只是想知道为什么标准不需要typedefs
强类型化?
谢谢。
答案 0 :(得分:14)
因为C不是强类型的,而且typedef的起源是思维
typedef只是为了方便和可读性,它不会创建新类型。
答案 1 :(得分:4)
typedef
只是一个漏斗(像许多其他关键字一样)。可以将其视为typealias
。
答案 2 :(得分:0)
即使Velocity
与int
不同,您的代码也会因类型转换规则而编译并正常工作。什么是行不通的是将类型为Velocity *
的表达式传递给期望int *
等的函数。如果要实现后一种类型的强制执行,只需将Velocity
作为结构或联合包含单个整数的类型,现在您将拥有一个新的实型。