typedef的四个用途和两大陷阱
来源:优易学  2010-1-14 11:21:23   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  POINT p1; // 这样就比原来的方式少写了一个struct,比较省事,尤其在大量使用的时候

  或许,在C++中,typedef的这种用途二不是很大,但是理解了它,对掌握以前的旧代码还是有帮助的,毕竟我们在项目中有可能会遇到较早些年代遗留下来的代码。

  用途三:

  用typedef来定义与平台无关的类型。

  比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:

  typedef long double REAL;

  在不支持 long double 的平台二上,改为:

  typedef double REAL;

  在连 double 都不支持的平台三上,改为:

  typedef float REAL;

  也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。

  标准库就广泛使用了这个技巧,比如size_t。

  另外,因为typedef是定义了一种类型的新别名,不是简单的字符串替换,所以它比宏来得稳健(虽然用宏有时也可以完成以上的用途)。

  用途四:

  为复杂的声明定义一个新的简单的别名。方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化版。举例:

  1. 原声明:int *(*a[5])(int, char*);

  变量名为a,直接用一个新别名pFun替换a就可以了:

  typedef int *(*pFun)(int, char*);

  原声明的最简化版:

  pFun a[5];

  2. 原声明:void (*b[10]) (void (*)());

  变量名为b,先替换右边部分括号里的,pFunParam为别名一:

  typedef void (*pFunParam)();

  再替换左边的变量b,pFunx为别名二:

  typedef void (*pFunx)(pFunParam);

  原声明的最简化版:

  pFunx b[10];

上一页  [1] [2] [3] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训