最近我发现typedef
我的代码中的工作与我提议的完全不同。像这样的一个例子:
typedef int *ptype;
ptype v1 = 0, v2 = 0;
结果:v1 和 v2 都被定义为指向int
类型的指针。但是如果你只是简单地将第二句中的ptype
by替换为or ,那么只有 v1 将是指针,而 v2 是正常的。似乎没有做简单的替换。更重要的是,当涉及到复杂的修饰符时:int *
int *v1 = 0, v2 = 0;
int* v1 = 0, v2 =0;
int
typedef
typedef int *ptype;
const ptype v3 = 0;
结果将是:v3 是一个const
指针,如果我们写的话,它不是指向const
int的指针const int *v3 = 0;
。在上面的代码const
中,代表整体的修饰符ptype
,而不是int
内部ptype
。因此,它看起来真的像是typedef
结合了复合类型int*
并创建了一个新类型。
但是,权威的 C/C++ 参考网站cplusplus说“typedef 不会创建不同的类型。它只会创建现有类型的同义词”。所以我真的很困惑,希望有人可以帮助解释typedef
. 谢谢!