Как понять конструкцию (*(Type*)a=b) - C (СИ)
Формулировка задачи:
Привет всем!
Ищу ошибку в чужой программе на C, натолкнулся на макрорасширение, после которого получается выражение: (*(volatile uint32_t *)&pdev->regs.GREGS->GCCFG = gccfg.d32);
Это же просто оператор присваивания, но что означают звездочки со скобками и причём здесь тип?
Компилятор не ругается, а я нигде не могу найти описания такой конструкции, и понять её результат.
Помогите, если нетрудно!
Решение задачи: «Как понять конструкцию (*(Type*)a=b)»
textual
Листинг программы
int x = 1; *(int *) &x = 2;
Объяснение кода листинга программы
- Объявляется переменная типа int с именем
x
и инициализируется значением 1. - Получается адрес памяти, где хранится значение переменной
x
, при помощи оператора&
. - Приводится тип указателя к типу int, при помощи оператора
*
и приведения типа. - Значение переменной
x
меняется на 2 при помощи оператора=
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д