我有以下结构定义:
typedef union U08_16_t
{
unsigned long s32;//message32
unsigned char sb32[4];//message_bytes1
}b32;
struct t72
{
unsigned char HH;
b32 wH;
b32 wL;
};
#define MfrCode TCDU.wL.sb32[2];
#define subclass TCDU.wH.sb32[3];
#define MRF 34
extern struct t72 xdata TCDU;
Run Code Online (Sandbox Code Playgroud)
现在稍后在代码中,在将一些值输入结构变量TCDU之后,我试图将MfrCode的值(#defined为TCDU.wL.sb32 [2])与常量MRF进行比较,定义为上面的34,但我在这行代码上收到错误:
...
if(MRF != MfrCode)
return FALSE;
...
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,任何人都可以帮助我.
你需要摆脱#defines中的分号 - 更改:
#define MfrCode TCDU.wL.sb32[2];
#define subclass TCDU.wH.sb32[3];
#define MRF 34
Run Code Online (Sandbox Code Playgroud)
至:
#define MfrCode TCDU.wL.sb32[2]
#define subclass TCDU.wH.sb32[3]
#define MRF 34
Run Code Online (Sandbox Code Playgroud)