-
- Как-то привык считать, что объявленная переменная в AVR GCC по умолчанию равна нулю, так как перед входом в main область переменных очищается нулями. manul78(1207 знак., 25.04.2017 11:59)
- На самом деле это очень стремное предположение, ибо стандарт не предписывает так делать обязательно. И при смене компилера в будущем эта стремная привычка сильно стукнет по башке. - Evgeny_CD(26.04.2017 18:56)
- Кто сказал? Как ещё можно интерпретировать вот это: "All objects with static storage duration shall be initialized (set to their initial values) before program startup." - SciFi(26.04.2017 20:18)
- так этож только для static.. - 0men(26.04.2017 20:25)
- Точнее, "static storage duration", что включает в себя и все глобальные переменные. Ежели речь шла об "automatic storage duration" (есть даже зарезервированное слово auto, кто-то помнит о таком?), тады ой. Не понимаю я этот ваш авр... - SciFi(26.04.2017 20:29 - 20:35)
- я помню )) еще и register и extern. Думаю, Евгений хотел сказать, что по стандарту глобальные не статик переменные не обязаны быть проинициализированы по умолчанию, и лучше бы это учесть. 0men(74 знак., 26.04.2017 20:32)
- Глобальные - обязаны. Кто не понимает этого простого факта - ждите, зондеркоманда уже выехала. - SciFi(26.04.2017 20:33)
- я хотел сказать, что по умолчанию в них билиберда и их НУЖНО проинициализировать явно, вручную. Надеюсь, мы об одном и том же.. - 0men(26.04.2017 20:38)
- Все глобальные переменные по стандарту должны быть инициализированы перед входом в main(). Те, у которых явно указано значение для инициализации, - этим значением. Остальные - нулём. - SciFi(26.04.2017 20:46)
- вообще не согласен.. можно ссылку на стандарт? - 0men(26.04.2017 20:53)
- Пожалуйста. Нужно всего лишь поднять глаза --> - SciFi(26.04.2017 20:57, ссылка)
- вообще не согласен.. можно ссылку на стандарт? - 0men(26.04.2017 20:53)
- Все глобальные переменные по стандарту должны быть инициализированы перед входом в main(). Те, у которых явно указано значение для инициализации, - этим значением. Остальные - нулём. - SciFi(26.04.2017 20:46)
- я хотел сказать, что по умолчанию в них билиберда и их НУЖНО проинициализировать явно, вручную. Надеюсь, мы об одном и том же.. - 0men(26.04.2017 20:38)
- Глобальные - обязаны. Кто не понимает этого простого факта - ждите, зондеркоманда уже выехала. - SciFi(26.04.2017 20:33)
- я помню )) еще и register и extern. Думаю, Евгений хотел сказать, что по стандарту глобальные не статик переменные не обязаны быть проинициализированы по умолчанию, и лучше бы это учесть. 0men(74 знак., 26.04.2017 20:32)
- Точнее, "static storage duration", что включает в себя и все глобальные переменные. Ежели речь шла об "automatic storage duration" (есть даже зарезервированное слово auto, кто-то помнит о таком?), тады ой. Не понимаю я этот ваш авр... - SciFi(26.04.2017 20:29 - 20:35)
- так этож только для static.. - 0men(26.04.2017 20:25)
- Это привычка осталась от мелких МК, типа Tiny2313 и малых ATmega, с 2..8К флэши. Там начинаешь считать каждый байт и экономить на всём. :) - manul78(26.04.2017 20:00)
- кстати, в Си отсутствие инициализации глобальных переменных как раз и сделано для экономии :) - 0men(26.04.2017 20:03)
- Кто сказал? Как ещё можно интерпретировать вот это: "All objects with static storage duration shall be initialized (set to their initial values) before program startup." - SciFi(26.04.2017 20:18)
- На самом деле это очень стремное предположение, ибо стандарт не предписывает так делать обязательно. И при смене компилера в будущем эта стремная привычка сильно стукнет по башке. - Evgeny_CD(26.04.2017 18:56)
- Как-то привык считать, что объявленная переменная в AVR GCC по умолчанию равна нулю, так как перед входом в main область переменных очищается нулями. manul78(1207 знак., 25.04.2017 11:59)