当我尝试构建应用程序时,我有以下代码生成错误:
#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。注意:C ++不支持default-int
如果我为LPADFU
切换LPBYTE
,则会成功编译。我更喜欢使用LPADFU
的定义或类型定义。有谁知道我怎么能做这个工作?感谢。
答案 0 :(得分:7)
摆脱#define
末尾的分号(它是宏的一部分):
#define LPAFDU LPBYTE
然而,更好的方法是使用typedef
而不是#define
:
typedef LPBYTE LPAFDU;
typedef最重要的优点是它们遵守范围规则。
答案 1 :(得分:2)
从您的LPAFDU声明中删除分号。
#define LPAFDU LPBYTE
您可能正在考虑使用分号的typedef语句。使用#define
,将定义插入宏的任何位置,包括分号。