[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;
上面同时定义了结构名称以及两种指向该结构的指针。