Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Вы поймите пож, что volatile на атомарность операций не влияет, поэтому для 8-разрядника не поможет. Как у Вас работало это чудо на 8-разряднике не знаю, но грабли я указал. Еще раз повторяю volatile не убирает неатомарность. И уровень оптимизации не влияет.
А компиляторозависимость приплел - у меня среда Monodevelop с C++, C#..., весьма чесная Linux-среда, Неработоспособность Вашего варианта проявилась в том, что компилятор при вычислении выражения в if увидел что произошло переполнение разрядной сетки и выбрал для результата бОльший тип. Вот ошибочка проявилась. А бороться с ней - известно как - явным приведением типов.
if( (unsigned short)(s_time-start) > (duration)) // ОК!
Вот и весь шурум-бурум с заемом. Насчет работы Вашего варианта с 8-разрядниками - верю, но что надежно - не верю.
Составить ответ | Вернуться на конференцию
Ответы