Цитата(Nikitoc @ Nov 27 2010, 23:56)

Всем доброго времени суток. Я тут недавно столкнулся с проблемой глобальных переменных, а точнее с тем, что о них всегда нужно помнить (где они инициализируются, где изменяются и т.д.) со всеми вытекающими трудновылавливаемыми глюками. Альтернатива глобальным переменным - передача указателя в функцию. Но вот как передать указатель в подпрограмму обработки прерывания (имеется в виду программа для какого-нибудь микроконтроллера)? Или еще так можно спросить: кто как избавляется от глобальных переменных? Какие есть способы минимизировать их использование? Интересно послушать мнения форумчан.
1. В обработчик прерываний нельзя передать параметры. Если несколько задумаетесь, поймете сами почему.
2. Если есть возможность напрячь немного голову и отказаться от глобальных переменных - это хорошо. С другой стороны, глобальные переменные иногда ничем не заменить. Если вы делаете embedded проект, то, как правило, таких переменных не так уж много.
3. Переходите на С++ и инкапсулируйте в классах обращение к таким переменным через соответствующие функции Set... и Get... По крайней мере вся работа с такими переменными будет локализована в одном программном модуле (cpp или h, в зависимости от реализации), а при использовании inline и потерь по скорости практически не будет.