Страница 1 из 1

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

Добавлено: Вс окт 02, 2022 12:42:32
VladislavS
Простой код.

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

int y = GPIOA->MODER;

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

Собственно вопрос, где в программе выполняется инициализация значения y посредством считывания GPIOA->MODER?

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

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

Изображение