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