[bo]以下是引用 [un]wrg0709[/un] 在 2008-3-15 13:01 的发言:[/bo]
typedef struct a
{......}b;
和
typedef struct
{......}b;
的区别
如果你能找到他的区别才怪了呢。为什么要有a呢,a是结构体的名称,有了a,我们就可以这样声明一个变量:
a mystruct;
而不必这样:
struct {......} mystruct;
上面的第二种写法相当于:
typedef a b;
这样b就等效为a了。我们就可以这样声明变量了:
b mystruct;
当然,采用了第二种写法,a写不写都基本无关紧要了。
例如在PlatformSDK中的结构定义基本都是下面这样的形式:
typedef struct tagBITMAPINFOHEADER{
DWORD
biSize;
LONG
biWidth;
LONG
biHeight;
WORD
biPlanes;
WORD
biBitCount;
DWORD
biCompression;
DWORD
biSizeImage;
LONG
biXPelsPerMeter;
LONG
biYPelsPerMeter;
DWORD
biClrUsed;
DWORD
biClrImportant;
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
上面同时定义了结构名称以及两种指向该结构的指针。