ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
27 марта
1578193 Топик полностью
Adept (Сегодня, 14:56 - 15:06, просмотров: 317)
Наткнулся на одну неприятную особенность в АВР-студии7. Если строка камментов оканчивается некоторым количеством (у меня после 4 начинались проблемы) подряд идущих слешей, то инструкция (или макрос) в следующей строке могут быть пропущены!! Не оставляйте строку комментариев оканчивающейся слешем!!! 

Наткнулся, когда в коментах фигурировал ряд "///////" Я так обознаал степень вложенности работы со стеком

к примеру

push TMP ;\

push TMP2 ;\\

.

.

.

pop TMP2 ;//

pop TMP ;/


визуально было удобно контролировать, теперь вод так не буду делать... заменю знаком "\" и следующей за ним цифрой степени вложенности

типа так:


push TMP ;\1

push TMP2 ;\2

.

.

.

pop TMP2 ;/2

pop TMP ;/1

неожиданная подлянка от компилятора :(( и главное - всё молчком....... Обнаружил случайно , когда посмотрел на стек-пойнтер до и после вызова П/П.

А потом посмотрел ассемблерный листинг и вообще выпал в осадок...




Подразумеваю (сын подсказал гипотезу :)) это от возможности писать код несколькими операторами в одной строке (ну, типа компилятолр внутреннекак бы собире исходник в очень длинную строку, и чётное количество символов "//" воспринимается как признак того, что следующая инстукция/макрос закомментированы (правлда так работают и прямые и обратные слеши.... В общем реально опасный баг!!!

...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)