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

Jim*_*ell 0 c++ compiler-errors visual-studio-2008

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

#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;
Run Code Online (Sandbox Code Playgroud)

这是它产生的错误:

错误C2208:'BYTE*':没有使用此类型定义的成员
错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int

如果我转出LPADFULPBYTE它编译成功.我更喜欢使用的定义或类型定义LPADFU.有谁知道我怎么能做这个工作?谢谢.

NPE*_*NPE 7

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

#define LPAFDU LPBYTE
Run Code Online (Sandbox Code Playgroud)

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

typedef LPBYTE LPAFDU;
Run Code Online (Sandbox Code Playgroud)

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