2010-12-21 85 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时,定义将插入宏的任何位置,包括您的分号。