如何使用#define访问c中的struct成员

时间:2011-10-13 15:07:06

标签: c struct

我有以下结构定义:

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;

现在稍后在代码中,在将一些值输入结构变量TCDU之后,我试图将MfrCode的值(#defined为TCDU.wL.sb32 [2])与常量MRF进行比较。在上面定义为34,但是我在这行代码上遇到错误:

    ...

if(MRF != MfrCode)
    return FALSE;
    ...

我不知道为什么,任何人都可以帮助我。

1 个答案:

答案 0 :(得分:5)

你需要摆脱#defines中的分号 - 更改:

#define MfrCode    TCDU.wL.sb32[2];
#define subclass   TCDU.wH.sb32[3];
#define MRF  34

为:

#define MfrCode    TCDU.wL.sb32[2]
#define subclass   TCDU.wH.sb32[3]
#define MRF  34