LPBYTE宏在编译时生成错误 - C ++

时间:2010-12-21 21:32:23

标签: c++ visual-studio-2008 compiler-errors

当我尝试构建应用程序时,我有以下代码生成错误:

#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的定义或类型定义。有谁知道我怎么能做这个工作?感谢。

2 个答案:

答案 0 :(得分:7)

摆脱#define末尾的分号(它是宏的一部分):

#define LPAFDU LPBYTE

然而,更好的方法是使用typedef而不是#define

typedef LPBYTE LPAFDU;

typedef最重要的优点是它们遵守范围规则。

答案 1 :(得分:2)

从您的LPAFDU声明中删除分号。

#define LPAFDU LPBYTE

您可能正在考虑使用分号的typedef语句。使用#define,将定义插入宏的任何位置,包括分号。