реклама на сайте
подробности

 
 
> Keil cast to struct, не работает (((
spectr
сообщение May 25 2016, 08:52
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Компилятор выдает ошибку:
Код
error:  #119: cast to type "struct led_class" is not allowed
      struct led_class* self = (struct led_class) malloc(sizeof(led_class));


Почему кейл не умеет в приведение к структуре? И как это починить?

Код:
Код
typedef struct led_class
{
    uint8_t pin;
    GPIO_TypeDef* gpio;
} led_class;

struct led_class* led_create(GPIO_TypeDef* GPIO, uint8_t pin)
{
    struct led_class* self = (struct led_class) malloc(sizeof(led_class));
    self->gpio = GPIO;
    self->pin = pin;
    led_init(self);
    return self;
}

void led_init(led_class* self)
{
    self->gpio->MODER |= 1 << (self->pin * 2);
    self->gpio->ODR = 0 << self->pin;
}

void led_on(led_class* self)
{
    self->gpio->ODR = 1 << self->pin;
}

int main(void)
{
    led_class* led = led_create(GPIOD, 2);
    led_on(led);
}


*пробовал включать --c99 - не помогает.
* пробовал включать --strict - вылазит куча ошибок из system_stm32f4xx.c



UPD:
Если переписать конструктор вот так (без приведения), то работает:
Код
struct led_class* led_create(GPIO_TypeDef* GPIO, uint8_t pin)
{
    led_class* self = malloc(sizeof(led_class));
    self->gpio = GPIO;
    self->pin = pin;
    led_init(self);
    return self;
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 19:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016