-
- Явным образом никто не мешает. Но как не вызвать ее при втором входе в блок? - IBAH(08.11.2018 16:18)
- Естественно, для этого должен быть признак того, что инициализация уже была. Никакого волшебства там нет. - SciFi(08.11.2018 16:19)
- я грешным делом подумал, что в современных версиях (С14) языка придумали какой нибудь конструктор - IBAH(08.11.2018 16:40)
- По стандарту языка C++ конструкторы статических объектов внутри функции или блока вызываются тогда, когда управление первый раз проваливается в этот блок. Кажется, что если функция имеет несколько статических локальных переменных, достаточно йцукен(243 знак., 08.11.2018 17:54)
- на Си++ всякий может, ты без ++ тот же механизм сделай. Те. если я правильно понял компилятор++, в частности ИАР сам добавляет в структуру признак инициализации. Механизм работает также как в тепломламповом, но просто скрыт от программиста. - IBAH(08.11.2018 19:19 - 19:30)
- Гугел мне сказал, что не когда "проваливается в этот блок", а когда ход выполнения программы натыкается на объявление переменной. Поэтому для каждой переменной отдельно. Требование объявлять все переменные в шапке блока было снято уже в С99, а в SciFi(34 знак., 08.11.2018 18:25)
- А вообще за такие формулировки создателей стандарта надо было в асфальт закатать. Зачем такие сложности, и вытекающая из них необходимость в каких-то флагах. Инициализировать все локальные static-переменные вместе с глобальными при запуске il-2(646 знак., 09.11.2018 18:47)
- ИАР инициализирует константы сразу. Что касается классов с конструкторами - тут такая тема, что C++ не гарантирует порядок вызова конструкторов глобальных объектов, определённых в разных файлах. Если конструктор одного объекта полагается на йцукен(419 знак., 10.11.2018 15:33 - 16:20, ссылка)
- Игнорирование политического момента детектед. А если для инициализации нужно подключение к вобла ку? А подключение осуществляется в main? Отож... - SciFi(09.11.2018 19:43)
- Правильно сказал гугел, а я сказал неправильно, но это не меняет того обстоятельства, что если переменные объявлены подряд, однопоточной программе хватило бы одного флага на все. Возможно, соломка не на случай исключений (объявление конструктора йцукен(278 знак., 08.11.2018 18:46)
- А вообще за такие формулировки создателей стандарта надо было в асфальт закатать. Зачем такие сложности, и вытекающая из них необходимость в каких-то флагах. Инициализировать все локальные static-переменные вместе с глобальными при запуске il-2(646 знак., 09.11.2018 18:47)
- Зачем портить нормальный язык программирования и делать из него цэ плюс плюс? Тем более, что последний давно существует :-) - SciFi(08.11.2018 16:47)
- Потому что любой погромист в итоге в Це делает свои кресты. lloyd(67 знак., 08.11.2018 16:49)
- Ни фига. Пока только статические объекты, пусть даже создаваемые экзотически, это чистый С. - VLLV(08.11.2018 21:46)
- Мне стоит подчеркнуть, что я считаю локальные статические переменные - злом в квадрате и признаком чудовищного быдлокода? - lloyd(08.11.2018 22:17)
- Похоже, мсье никогда не программировал МК. - SciFi(08.11.2018 22:24)
- Полно вам, месье пришел в эмбеддед из десктопного программирования вот и все. lloyd(98 знак., 08.11.2018 22:34)
- Если отдельно от всего остального, то да :) - Скрипач(08.11.2018 23:21)
- а Слава КПСС вааще не человек - Vit(08.11.2018 22:41)
- Кого-то ассемблер контузил, а кого-то десктоп. Всякое бывает :-) - SciFi(08.11.2018 22:38)
- Полно вам, месье пришел в эмбеддед из десктопного программирования вот и все. lloyd(98 знак., 08.11.2018 22:34)
- Похоже, мсье никогда не программировал МК. - SciFi(08.11.2018 22:24)
- Мне стоит подчеркнуть, что я считаю локальные статические переменные - злом в квадрате и признаком чудовищного быдлокода? - lloyd(08.11.2018 22:17)
- Ни фига. Пока только статические объекты, пусть даже создаваемые экзотически, это чистый С. - VLLV(08.11.2018 21:46)
- Потому что любой погромист в итоге в Це делает свои кресты. lloyd(67 знак., 08.11.2018 16:49)
- По стандарту языка C++ конструкторы статических объектов внутри функции или блока вызываются тогда, когда управление первый раз проваливается в этот блок. Кажется, что если функция имеет несколько статических локальных переменных, достаточно йцукен(243 знак., 08.11.2018 17:54)
- я грешным делом подумал, что в современных версиях (С14) языка придумали какой нибудь конструктор - IBAH(08.11.2018 16:40)
- Естественно, для этого должен быть признак того, что инициализация уже была. Никакого волшебства там нет. - SciFi(08.11.2018 16:19)
- Явным образом никто не мешает. Но как не вызвать ее при втором входе в блок? - IBAH(08.11.2018 16:18)