【发布时间】:2015-03-13 00:38:43
【问题描述】:
作为一个 C 初学者,翻阅 MSDN's Windows Data Types,我发现有很多定义的类型似乎是多余的。
例如使用typedef:
- CHAR --
typedef char CHAR; - 浮动 --
typedef float FLOAT;
也可以作为对象宏:
- 常量 --
#define CONST const
据我了解,typedef 和 #define 通常用于阐明程序员的意图:
#define BOOL int
和/或缩短类型声明(想不出一个好的例子):
typedef unsigned char BYTE;
但是我不明白简单地将 char 替换为 CHAR 会有什么好处。
那么微软为什么要定义这些类型呢?
【问题讨论】:
-
因为... 微软
-
开玩笑,我怀疑一定有历史原因
-
@bolov 是的,看起来是这样,上面的副本有一些很好的答案。
-
这是微软将winapi与C编译器实现隔离的基本方式。 30 年前使用这些 typedef 编写的程序,针对 16 位 8086 处理器,今天仍然可以在 64 位 Haswell 处理器上编译和运行。