Заметки на полях

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Заметки на полях

Сообщение VladislavS »

Простой код.

Код: Выделить всё

int y = GPIOA->MODER;

int main()
{   
  printf("y=0x%08X",y);  
}
Как думаете, почему должно вывестись что-то типа "y=0x6A800000", а у Eddy_Em выведет "y=0x00000000"?

Собственно вопрос, где в программе выполняется инициализация значения y посредством считывания GPIOA->MODER?
Реклама
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Re: Заметки на полях

Сообщение MLX90640 »

Ну дак... это сработает только в C++ (в чистом Си будет сообщение об ошибке использования неконстантного инициализатора), при вызове (в самом конце) как раз той самой загадочной __libc_init_array, назначение которой напрягает многих. Поздравляю, конечно, что вы теперь тоже знаете, для чего нужен __libc_init_array, точнее говоря, static_initialization :)))

Изображение
Реклама
Ответить

Вернуться в «ARM»