2016-12-20 43 views
4

用的typedef我剛剛發現,以下是有效的C++多路輸出

typedef const char* PSTR, *LPSTR; 

我的問題是:PSTR和LPSTR相同的別名?

爲什麼,如果我將其更改爲

typedef const char* PSTR, LPSTR; 

我得到LPSTR是char?如果

typedef const char* PSTR, LPSTR; 

PSTR是一個指針

+0

它就像一個變量聲明,在前面有一個'typedef'。 – molbdnilo

+1

現在下面的答案已經解釋了它 - 可能最好忘記整個事情,並堅持每個typedef一個標識符。 –

+0

@GavinLock當然,這是最具可讀性的,但我認爲他在MS Windows標題中看到了這一行。 – Boiethios

回答

3

這就是爲什麼我總是堅持*的名稱,而不是類型。

當你鍵入

typedef const char *PSTR; 

你必須閱讀*PSTRconst char,所以PSTRconst char的地址。

所以,如果你鍵入

typedef const char *PSTR, 
        *LPSTR, 
        OTHER; 

OTHER*LPSTRconst char的只有我爲*PSTR

0

的typedef不alias..so,LPSTR是char

+0

請記住*是一個操作符,而不是一個類型。 –

+0

請記住*是一個操作符,而不是一個類型。當你定義char * x時,意味着當你把*放在變量x之前時,你會得到一個char。 –

0

是啊這是一個char。用於推導變量定義中變量類型的相同規則適用於typedef定義。

相關問題