как использовать #define для доступа к элементам структуры в c

#c #struct

#c #структура

Вопрос:

У меня есть следующее определение структуры:

 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 (которое #определено как TCDU.wL.sb32[2] ) с константой MRF, которая определена как 34 выше, но я получаю сообщение об ошибкестрока кода:

     ...

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

я не уверен, почему, может ли кто-нибудь помочь мне с этим.

Ответ №1:

Вам нужно избавиться от точек с запятой в вашем #defines — change:

 #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
  

Комментарии:

1. ой, я не думаю, что я был таким небрежным раньше, мой плохой. большое спасибо.