LPBYTE宏生成错误在编译 - C++
问题描述:
我有下面的代码被产生错误,当我尝试构建应用程序: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。注:如果我转出LPADFU
为LPBYTE
它成功编译C++不支持默认int
。我宁愿使用LPADFU
的定义或类型定义。有谁知道我该如何做这项工作?谢谢。
答
获取你的#define
(这是宏的一部分)结束摆脱分号:
#define LPAFDU LPBYTE
一个更好的方式来做到这一点,但是,是使用typedef
,而不是#define
:
typedef LPBYTE LPAFDU;
typedefs最重要的优点是他们服从范围规则。
答
从您的LPAFDU声明中删除分号。
#define LPAFDU LPBYTE
你可能正在考虑一个typedef语句,它会有一个分号。使用#define
时,定义将插入宏的任何位置,包括您的分号。
我同意,使用`typedef`好得多。 – 2010-12-21 21:39:19