首页 / 软件开发 / C++ / 使用typedef抑制劣质代码
使用typedef抑制劣质代码2011-04-22 MTT工作室 Danny Kalev摘要:Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管 怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免 缺欠,从而使代码更健壮。typedef 声明,简称 typedef,为现有类型创建一个新的 名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性 。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。如 何创建平台无关的数据类型,隐藏笨拙且难以理解的语法?使用 typedefs 为现有类 型创建同义字。定义易于记忆的类型名typedef 使用最多的地方是创建易于 记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于 ""typedef"" 关键字右边。例如:typedef int size;
此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建 新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size:void measure(size * psz);
size array[4];
size len = file.getlength();
std::vector <size> vs;
typedef 还可以掩饰符 合类型,如指针和数组。例如,你不用象下面这样重复定义有 81 个字符元素的数组:char line[81];
char text[81];
定义一个 typedef,每当要用 到相同类型和大小的数组时,可以这样:typedef char Line[81];
Line text, secondline;
getline(text);
同样,可以象下面这样隐藏指针语法:typedef char * pstr;
int mystrcmp(pstr, pstr);
这里将带我 们到达第一个 typedef 陷阱。标准函数 strcmp()有两个‘const char *’类型 的参数。因此,它可能会误导人们象下面这样声明 mystrcmp():int mystrcmp (const pstr, const pstr);
这是错误的,按照顺序,‘const pstr’ 被解释为‘char * const’(一个指向 char 的常量指针),而不是 ‘const char *’(指向常量 char 的指针)。这个问题很容易解决:typedef const char * cpstr;
int mystrcmp(cpstr, cpstr); // 现在是 正确的
记住:不管什么时候,只要为指针声明 typedef,那么都要在最终的 typedef 名称中加一个 const,以使得该指针本身是常量,而不是对象。