为什么typedef不是强类型的?

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

谢谢。

因为C不是强类型的,所以typedef的起源就是思考

typedef只是为了方便和可读性,它不会创建新类型。

typedef只是一个漏斗(像许多其他关键字一样)。 把它想象成typealias

相反,C具有兼容类型的完整概念。 这允许例如将编译单元链接在一起,即使function原始声明的声明仅使用兼容类型而不是相同类型完成。 所有这些都来自于日常生活中的简单实际需要,仍然能够为实施提供一些保证。

即使Velocity是与int不同的类型,由于类型转换规则,您的代码也会编译并正常工作。 什么是行不通的是将Velocity *类型的表达式传递给期望int *等的函数。如果要实现后一种类型的强制执行,只需使Velocity成为包含单个整数的结构或联合类型,你就可以了现在有一个新的真实类型。