Я хотел бы разыменовать указатель на структуру.Этот код скомпилирован с использованием компилятора COSMIC и загружен в микроконтроллер STM8S.
Ниже приведена моя проблема в коде:
typedef struct GPIO_struct
{
volatile unsigned char CR1;
volatile unsigned char CR2;
}
GPIO_TypeDef;
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
// This variable will be used for a testing purpose
GPIO_TypeDef vGPIO = (GPIO_TypeDef)*GPIOx; // HERE IS THE PROBLEM
}
int main(void)
{
GPIO_TypeDef GPIOY @0x5000; // Reference to an absolute address
GPIO_DeInit(&GPIOY);
}
При попытке этого кода возникает ошибка: invalid indirection operand
,Почему компилятор отклоняет этот код?
Примечание: код основан на стандартной библиотеке STM.
ОБНОВЛЕНИЕ:
Я знаю, что могу получить доступчлены структуры используют оператор ->
, но я все еще хочу сохранить члены структуры в переменной того же типа, что и структура, для некоторой цели тестирования.Я просто хочу сделать снимок регистров на данный момент.
ОБНОВЛЕНИЕ 2
С кодом, приведенным выше, я получаю еще одну ошибку invalid cast type
Когда я удаляю актерский состав, он компилируется.
Но я не понимаю, почему !!Может кто-нибудь объяснить, пожалуйста