我有这段代码:
typedef struct _tagCOMMUNICATIONOBJECT
{
HWND hWndClient;
BOOL bExitLoop;
LONG lSleepTimeout;
} COMMUNICATIONOBJECT, *PCOMMUNICATIONOBJECT;
我理解这一点的方式是_tagCOMMUNICATIONOBJECT是具有3个公共成员hWndClient的结构,... 我的问题:什么是COMMUNICATIONOBJECT和* PCOMMUNICATIONOBJECT?我不熟悉这种语法。
谢谢!
朱
答案 0 :(得分:4)
这是Microsoft定义其大部分结构的旧方式。它适用于C和C ++。在C ++中,struct
关键字之后的名称就足够了,因为它自动输入了这样一个名称。
但为了让它更清晰,你可以重写,如下:
struct _tagCOMMUNICATIONOBJECT
{
HWND hWndClient;
BOOL bExitLoop;
LONG lSleepTimeout;
};
typedef struct _tagCOMMUNICATIONOBJECT COMMUNICATIONOBJECT;
typedef struct _tagCOMMUNICATIONOBJECT *PCOMMUNICATIONOBJECT;
所以在C ++中他们定义了3个名字:
_tagCOMMUNICATIONOBJECT
COMMUNICATIONOBJECT
PCOMMUNICATIONOBJECT
答案 1 :(得分:0)
COMMUNICATIONOBJECT
是typedef的名称,PCOMMUNICATIONOBJECT
是指向这种typedef的指针。
答案 2 :(得分:0)
通过在typedef
之前放置struct
,您可以定义结构,然后在定义之后为其列出新的别名。 COMMUNICATIONOBJECT
是_tagCOMMUNICATIONOBJECT
的新名称,PCOMMUNICATIONOBJECT
是指向结构的指针的新名称。它可以这样写成:
struct _tagCOMMUNICATIONOBJECT
{
HWND hWndClient;
BOOL bExitLoop;
LONG lSleepTimeout;
};
typedef _tagCOMMUNICATIONOBJECT COMMUNICATIONOBJECT;
typedef _tagCOMMUNICATIONOBJECT *PCOMMUNICATIONOBJECT;