-
- Эээ.. а как локальная переменная может быть волатильна? Волатильность по определению изменяемость не только программой, если у область действия блок, как "не только программа" про переменную узнает (ДМА в расчет не берем) - IBAH(17.03.2016 15:13)
- К примеру, организовать задержку for( volatile uint8_t i=0; i<20; i++ ); без volatile компилятор оптимизирует цикл - 0men(17.03.2016 16:29)
- Ну и пускай оптимизирует, всё равно раз i снаружи недоступна. - Yft(18.03.2016 12:53)
- в некоторых случаях он этот цикл просто выкинет )) - 0men(18.03.2016 13:01)
- мне кажется что и с волитейтом оптимизирует, я бы на месте компилятора оптимизировал - IBAH(17.03.2016 16:55)
- Не, проверьте :) - 0men(17.03.2016 17:04)
- Не, с volatile не оптимизирует. - Apтём(17.03.2016 16:58)
- Ну и пускай оптимизирует, всё равно раз i снаружи недоступна. - Yft(18.03.2016 12:53)
- По стандарту - может. Зачем - отдельный вопрос, вон ниже тебе пример привели :-) - il-2(17.03.2016 16:23)
- если компилятор не ругается это не значит, что
это стандарттак можно и/или нужно делать - IBAH(17.03.2016 16:53)
- если компилятор не ругается это не значит, что
- А почему нет? Apтём(352 знак., 17.03.2016 15:22)
- Мосье знает толк в извращениях! - IBAH(17.03.2016 15:29)
- К примеру, организовать задержку for( volatile uint8_t i=0; i<20; i++ ); без volatile компилятор оптимизирует цикл - 0men(17.03.2016 16:29)
- А я всегда через преобразование типа указателя делал. Не поручусь, что соответствует стандарту, но вроде работает. йцукен(70 знак., 16.03.2016 19:22,
)
- Походу, у тебя правильный подход, и в стандарте про это пишут: il-2(404 знак., 17.03.2016 12:28)
- Приведение типа всегда соответствует, и оно означает "пошли все нах, папка лучше знает". А если не знает, то это обезьяна с гранатой :-) - SciFi(16.03.2016 20:07)
- Какой ужасный говнокод. Будет работать через раз, в зависимости от того, как сложатся звёзды. Всё как раз наоборот: там, где хочется оптимизировать доступ к volatile переменной, создаётся её локальная копия (не volatile), и с ней ведётся работа. - SciFi(16.03.2016 16:23)
- Короче, из-за прогрессирующего склероза я написал вначале невесть что :-) Так действительно делать нельзя. Я уже лет 5 как программирую в основном под RTOS и за ненадобностью забыл про volatile :-). - il-2(17.03.2016 12:41)
- Хм, RTOS говорите... Apтём(239 знак., 17.03.2016 13:14)
- В общем, все оказалось как в анекдоте про сороконожку, когда ее вдруг спросили как она не путается в ногах когда ходит: il-2(923 знак., 17.03.2016 16:17)
- Правило тут такое, все, что меняется в прерывании и используется в фоне должно быть volatile - 0men(17.03.2016 16:21)
- Короче, все переменные, которые используются в двух потоках. Хотя, я бы подумал над исключениями, но сходу ничего в голову не приходит. - SciFi(17.03.2016 18:01)
- Правильнее сказать не в прерывании, а в разных потоках исполнения - разные задачи RTOS могут использовать общие переменные для взаимодействия. - Apтём(17.03.2016 16:29)
- согласен :) - 0men(17.03.2016 16:32)
- Правило тут такое, все, что меняется в прерывании и используется в фоне должно быть volatile - 0men(17.03.2016 16:21)
- Связался я с вами :-) Cейчас всю плешь на маковке себе прочешу :-) - il-2(17.03.2016 15:47)
- В общем, все оказалось как в анекдоте про сороконожку, когда ее вдруг спросили как она не путается в ногах когда ходит: il-2(923 знак., 17.03.2016 16:17)
- Хм, RTOS говорите... Apтём(239 знак., 17.03.2016 13:14)
- Блин. Что-то вы меня с Артемом озадачили... Чешу репу... - il-2(17.03.2016 11:41)
- Короче, из-за прогрессирующего склероза я написал вначале невесть что :-) Так действительно делать нельзя. Я уже лет 5 как программирую в основном под RTOS и за ненадобностью забыл про volatile :-). - il-2(17.03.2016 12:41)
- Оригинально... Apтём(119 знак., 16.03.2016 16:22)
- Эээ.. а как локальная переменная может быть волатильна? Волатильность по определению изменяемость не только программой, если у область действия блок, как "не только программа" про переменную узнает (ДМА в расчет не берем) - IBAH(17.03.2016 15:13)