2016-12-20 3 views
4

ich gerade herausgefunden, dass die folgenden gilt C++Typedef mit mehreren Ausgängen

typedef const char* PSTR, *LPSTR; 

meine Frage ist: sind PSTR und LPSTR die gleiche Alias?

Warum, wenn ich es ändern zu

typedef const char* PSTR, LPSTR; 

ich, dass LPSTR ein Zeichen ist ??

+0

Es ist genau wie eine Variablendeklaration, mit einem 'typedef' vor. – molbdnilo

+1

Und jetzt, dass die Antworten unten es erklärt haben - wahrscheinlich besser, das Ganze zu vergessen und bei einer Kennung pro Typdef bleiben. –

+0

@GavinLock Klar, das ist am besten lesbar, aber ich denke, er hat diese Zeile in einem MS Windows-Header gesehen. – Boiethios

Antwort

3

Deshalb stecke ich immer die * auf den Namen und nicht auf den Typ.

Wenn Sie

typedef const char *PSTR; 

geben müssen Sie diese *PSTR lesen, ist ein const char, so ist PSTR die Adresse eines const char.

Also, wenn Sie geben

typedef const char *PSTR, 
        *LPSTR, 
        OTHER; 

OTHER und *LPSTR sind const char s genauso *PSTR.

0

typedef NICHT ist alias..so wenn

typedef const char* PSTR, LPSTR; 

PSTR ein Zeiger ist, ist LPSTR ein char

+0

Bitte denken Sie daran, * ist ein Operator, kein Typ. –

+0

Bitte denken Sie daran, * ist ein Operator, kein Typ. Wenn Sie char * x definieren, bedeutet das, wenn Sie * vor Variable x setzen, erhalten Sie ein Zeichen. –

0

Yup es ein char ist. In einer Typdefinition gelten die gleichen Regeln für die Ableitung des Typs einer Variablen in Variablendefinitionen.

Verwandte Themen