C++ 具有多个输出的Typedef

C++ 具有多个输出的Typedef,c++,C++,我刚刚发现以下是有效的C++ typedef const char* PSTR, *LPSTR; 我的问题是:PSTR和LPSTR是同一个别名吗 为什么我要把它改成 typedef const char* PSTR, LPSTR; 我知道LPSTR是一个字符???typedef不是别名..所以如果 typedef const char* PSTR, LPSTR; PSTR是指针,LPSTR是字符是的,它是字符。在变量定义中推断变量类型的规则同样适用于typedef定义。这就是为什么我总是将

我刚刚发现以下是有效的C++

typedef const char* PSTR, *LPSTR;
我的问题是:PSTR和LPSTR是同一个别名吗

为什么我要把它改成

typedef const char* PSTR, LPSTR;

我知道LPSTR是一个字符???

typedef不是别名..所以如果

typedef const char* PSTR, LPSTR;

PSTR是指针,LPSTR是字符

是的,它是字符。在变量定义中推断变量类型的规则同样适用于typedef定义。

这就是为什么我总是将
*
粘贴到名称而不是类型上

你打字的时候

typedef const char *PSTR;
您必须了解
*PSTR
常量字符
,因此
PSTR
常量字符
的地址

所以如果你打字

typedef const char *PSTR,
                   *LPSTR,
                   OTHER;

OTHER
*LPSTR
const-char
s,就像
*PSTR

一样,它就像一个变量声明,前面有一个
typedef
。现在下面的答案已经解释了这一点-也许最好忘记整个事情,坚持每个typedef使用一个标识符。@GavinLock当然,这是最可读的,但我认为他在MS Windows标题中看到了这一行。请记住*是运算符,不是类型。请记住*是运算符,不是类型。当你定义char*x时,意味着当你把*放在变量x前面时,你会得到一个char。