2016-01-24 3 views
1

У меня есть этот кусок кода:я не могу понять это ЬурейеЕ

typedef struct _tagCOMMUNICATIONOBJECT 
{ 
    HWND hWndClient; 
    BOOL bExitLoop; 
    LONG lSleepTimeout; 
} COMMUNICATIONOBJECT, *PCOMMUNICATIONOBJECT; 

Я так понимаю, что это _tagCOMMUNICATIONOBJECT является структурой, которая имеет 3 открытых членов hWndClient ... Мой вопрос: какие CommunicationObject и * PCOMMUNICATIONOBJECT ? Я не знаком с этим синтаксисом.

Спасибо!

Жюль

ответ

4

Это старый способ, которым Microsoft определила большинство своих структур. Он работает в C и C++. В C++ просто имя после ключевого слова struct было бы достаточно, поскольку это имя авто-typedef.

Но, чтобы сделать его более четким, вы могли бы переписать такие как следующие:

struct _tagCOMMUNICATIONOBJECT 
{ 
    HWND hWndClient; 
    BOOL bExitLoop; 
    LONG lSleepTimeout; 
}; 

typedef struct _tagCOMMUNICATIONOBJECT COMMUNICATIONOBJECT; 
typedef struct _tagCOMMUNICATIONOBJECT *PCOMMUNICATIONOBJECT; 

Таким образом, в C++ они определяют три названия:

_tagCOMMUNICATIONOBJECT 
COMMUNICATIONOBJECT 
PCOMMUNICATIONOBJECT 
+0

Спасибо, что делает его ясно! – Giuliano

0

COMMUNICATIONOBJECT это имя ЬурейеЕ и PCOMMUNICATIONOBJECT является указателем на такой ЬурейеЕ.

0

Поместив typedef до struct, вы можете определить структуру и затем перечислить для нее новые псевдонимы после определения. COMMUNICATIONOBJECT - новое имя для _tagCOMMUNICATIONOBJECT и PCOMMUNICATIONOBJECT - новое имя для указателя на структуру. Вместо этого можно было бы написать так:

Смежные вопросы