【发布时间】:2011-02-27 20:25:24
【问题描述】:
以下将A 定义为替换为B:
#define A B
而这将A 定义为类型 B 的别名:
typedef B A;
为什么?这不是语无伦次吗?
【问题讨论】:
-
PS:我知道它们是完全不同的并且用于非常不同的目的。但就个人而言,我认为 typedef 应该是相反的。
-
如果有什么安慰的话,Ken Thompson 也有同样的想法。在 Go 中,虽然没有直接等效于
typedef的仅创建类型别名的方法,但从旧类型创建新类型的方法是type NewType OldType。我想知道他和 Dennis Ritchie 是否会正面争论 Go 明确做出与 C 相似但不同的语法决策。Go 中的声明顺序基本上是“相反的方式”:-)
标签: c typedef c-preprocessor