ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
881936 Топик полностью
йцукен (10.11.2018 15:33 - 16:20, просмотров: 166) ответил il-2 на А вообще за такие формулировки создателей стандарта надо было в асфальт закатать. Зачем такие сложности, и вытекающая из них необходимость в каких-то флагах. Инициализировать все локальные static-переменные вместе с глобальными при запуске
ИАР инициализирует константы сразу. Что касается классов с конструкторами - тут такая тема, что C++ не гарантирует порядок вызова конструкторов глобальных объектов, определённых в разных файлах. Если конструктор одного объекта полагается на http://www.cs.technion.ac.il/users/yechiel/c++-faq/static-init-order.html
то, что другой объект инициализирован, нужно как-то форсировать порядок инициализации. Стандартное решение - сделать объект статической переменной в функции, типа так class WebServer { ... }; WebServer *get_web_server() { static WebServer ws; // constructor called once return &ws; } Переменная ws получается почти глобальной, но вызов конструктора откладывается до первого вызова get_web_server.