#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. ой, я не думаю, что я был таким небрежным раньше, мой плохой. большое спасибо.