Как использовать #define для доступа к членам структуры в C - PullRequest
0 голосов
/ 13 октября 2011

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

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 Ответ

5 голосов
/ 13 октября 2011

Вам нужно избавиться от точек с запятой в #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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...