Как работает данный синтаксис - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день, подскажите пожалуйста, как работает синтаксис:
#define RM_INPUT    0x00B1 // Цифровые входы
typedef __packed struct
{
    u16 fDoor: 1;
    u16 fMag1Ans: 1;
    u16 fMag2Ans: 1;
    u16 fStartButton: 1;
    u16 fStopButton: 1;
    u16 fButton3: 1;
    u16 fButton4: 1;
    u16 fButton5: 1;
    u16 fDIN4: 1;
}  DiscrInputRegStruct;
#define DiscInputReg (*(DiscrInputRegStruct*)(MB_MEMORY+RM_INPUT))
Здесь работа идет с протоколом MODBUS. Есть общий массив данных куда пишет микроконтроллер и откуда читает ПК - MB_MEMORY. Для удобства номера ячеек дефайнятся, то есть в ячейке MB_MEMORY[RM_INPUT] лежат "упакованные" 9 бит состояния цифровых входов, которые оформляются как структура. Интересует, как работает данная строка
#define DiscInputReg (*(DiscrInputRegStruct*)(MB_MEMORY+RM_INPUT))
И как его использовать в дальнейшем? Спасибо
Как я понял тут создается указатель на элемент с адресом нулевого элемента массива + RM_INPUT, а дальше не понял

Решение задачи: «Как работает данный синтаксис»

textual
Листинг программы
if(MB_MEMORY[RM_INPUT] & (1 << 2)) {/*do smth*/}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы