我正在查看 LPSTR定义为
typedef char* PSTR, *LPSTR;
文档说 PSTR 是 LPSTR 的别名。缺少取消引用运算符这一事实足以告诉我它是别名吗?别名是如何声明的?换句话说,如果我将其更改为
typedef char* PSTR, PSTR2, *LPSTR;
我现在有两个别名吗?如果我添加另一个取消引用的变量会怎样?
typedef char* PSTR, *LPSTR, *LPSTR2;
最佳答案
什么都不缺。星号周围的空格无关紧要。
这个:
typedef char* PSTR, *LPSTR;
与
相同typedef char *PSTR, *LPSTR;
反过来等同于拥有
typedef char *PSTR;
typedef char *LPSTR;
两者都为“指向 char
的指针”类型定义了类型别名,但它们之间没有任何联系,事实上它们都是用相同的 typedef
声明的没关系,主要是在你想要像这样的变体(有和没有指针)时完成的:
typedef struct {
int x, y;
} Point, *PointPtr;
顺便说一下,这是我真的不鼓励的做法(问题本身的代码也是如此),因为“隐藏星号”通常不是一个好主意。星号很重要,让它出现而不是隐藏在类型中会使代码更清晰。
关于c - 别名的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11313477/