16+
Вторник
21 ноября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры AVR

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
fk0  (09.11.2017 23:53) , в ответ на Да я думал неинтересно народу... Надеюсь, вы поняли откуда появляется ошибка. Это, оказывается, всего лишь ошибка наблюдателя. Выход - проверять в обратной поледовательности чем инкремент, т.е. if(tail>head) {out ERROR;} и будет хорошо. автор: Petrovich
В выражении tail > head последовательность чтения переменных в общем случае не совсем определена, если они не volatile (для последних порядок сохраняется, но только относительно самих этих переменных, а не других переменных, памяти адресуемой по 
указателю и т.п.) Да, порядок слева направо, и если бы там функции были -- так бы и вызывались. Но когда компилятор получил, условно, ассемблерный код он может начать его оптимизировать и переставлять инструкции в коде функции. Компилятор может заранее в прологе функции в регистры набрать переменные с которыми будет работать, так код меньше/проще/лучше. И набрать в другом порядке. Если здесь все volatile, то вообще не вижу проблему.
[ZX]
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVII