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