typedef的用途大家都是很熟悉的了,遇到很长的标识又不便阅读和表示的时候,就可以
重新定义更有阅读性和表现力的标识。那么,typedef是不是就像险恶的宏替换呢?开始我也
是这么认为的,直到看到一个例子。
1 typedef const* constPointer
2 int constPointer pSomeThing;
现在的问题是,指针pSomeThing是一个常指针呢,还是一个指向一个常量的可变指针?
答案可能会出乎一般人的意料。因为如果只是按照文本替换的语义,pSomeThing应该是一个
指向一个int常量的指针。可是实际上它是一个常指针,指向的int量的值是可变的。
这就是typedef和宏不同的地方。它在定义新的标识的时候,并不深入标识的内部判断,
而是整个标识作为一个整体表达语义,因此,constPointer表达的是“常指针”的语义,const
限定符作用于指针之上。就是这么简单。
posted on 2010-01-20 09:44
Leix 阅读(313)
评论(0) 编辑 收藏 引用