t FAST_COUNTER; //错误
编译通不过。问题出在你不能在声明中有多个存储类关键字。因为符号 typedef 已经占据了存储类关键字的位置,在 typedef声明中不能用register(或任何其它存储类关键字)。
促进跨平台开发
typedef有另外一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫 REAL的浮点类型,在目标机器上它可以i获得最高的精度:
typedef
long double REAL;
在不支持
long double 的机器上,该 typedef 看起来会是下面这样:
typedef
double REAL;
并且,在连double都不支持的机器上,该 typedef看起来会是这样:、
typedef float REAL;
你不用对源代码做任何修改,便可以在每一种平台上编译这个使用 REAL类型的应用程序。唯一要改的是 typedef本身。在大多数情况下,甚至这个微小的变动完全都可以通过奇妙的条件编译来自动实现。不是吗 标准库广泛地使用 typedef来创建这样的平台无关类型:size_t,ptrdiff和 fpos_t 就是其中的例子。此外,象 std::string和 std::ofstream这样的 typedef还隐藏了长长的,难以理解的模板特化语法,例如:basic_string,allocator>和 basic_ofstream>。