2010-12-21 84 views
0

我有下面的代碼被產生錯誤,當我嘗試構建應用程序:LPBYTE宏生成錯誤在編譯 - C++

#define LPAFDU LPBYTE; 

typedef struct appAfDataIndIeee_tag 
{ 
    integrPktHead_t head; 
    BYTE flags; 
    WORD dstShort; 
    BYTE dstEndpoint; 
    BYTE srcShort; 
    BYTE srcIeee[8]; 
    WORD clusterId; 
    BYTE afduLength; 
    LPAFDU afdu;  // <-- error 
} appAfDataIndIeee_t; 

這是它產生的錯誤:

錯誤C2208:'BYTE *':沒有使用此類型定義的成員
錯誤C4430:缺少類型說明符 - 假定爲int。注:如果我轉出LPADFULPBYTE它成功編譯C++不支持默認int

。我寧願使用LPADFU的定義或類型定義。有誰知道我該如何做這項工作?謝謝。

回答

7

獲取你的#define(這是宏的一部分)結束擺脫分號:

#define LPAFDU LPBYTE 

一個更好的方式來做到這一點,但是,是使用typedef,而不是#define

typedef LPBYTE LPAFDU; 

typedefs最重要的優點是他們服從範圍規則。

+0

我同意,使用`typedef`好得多。 – 2010-12-21 21:39:19

2

從您的LPAFDU聲明中刪除分號。

#define LPAFDU LPBYTE 

你可能正在考慮一個typedef語句,它會有一個分號。使用#define時,定義將插入宏的任何位置,包括您的分號。