还可以用 typedef 来定义与平台无关的类型。
比如定义一个叫 FALSE 的浮点类型,在目标平台一上,让它表示最高精度的类型为:
typedeflongdouble FALSE;
在不支持 long double 的平台二上,改为:
typedefdouble FALSE;
在连 double 都不支持的平台三上,改为:
typedeffloat FALSE;
也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。
标准库就广泛使用了这个技巧,比如 size_t。
另外,因为 typedef 是定义了一种类型的新别名,不是简单的字符串替换,所以它比宏来得稳健(虽然用宏有时也可以完成以上的用途)。