Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
09.09.2010, 22:36
|
|
Прописка
Регистрация: 29.08.2005
Сообщений: 139
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
WinAVR не нравится символ '\'
Началось с того что решил перевести этот исходник http://radiokot.ru/lab/controller/15/ под WinAVR и заметил что некоторые символы сдвинуты на единицу относительно таблицы ASCII. Путем логических проб быстро выявилась пропажа символа ']' (тот что перед '\'). Сравнение этого драйвера для KS0108 с AVRLibs выявило что в коментах вот такая разница:
первый:
{0x02,0x04,0x08,0x10,0x20}, // \
{0x00,0x41,0x41,0x7F,0x00}, //]
второй:
0x02, 0x04, 0x08, 0x10, 0x20,// "\"
0x41, 0x41, 0x7F, 0x00, 0x00,// ]
тоесть в первом случае символ ']' улетал в коменты. Редактирование под второй вариант помогли, но пропал символ '\'. Тоесть вывод строки "[\]" выглядел как "[]". Если использовать функцию вывода одного символа '\', то компилятор выдает ошибки:
main.c:234: error: missing terminating ' character - на эту строку glcdWriteChar('\');
main.c:235: error: expected expression before 'while' - идет сразу за glcdWriteChar('\');
и даже на на скобку завершающую функию main ругается.
main.c:326: error: expected ';' before '}' token
также еще эта строка в редакторе WinAVR выделяется цветной полосой, начиная от символа!!!
В принципе не смертельно - все что приходит из вне в хексе и выведется как надо, а один символ можно и просто 0х5с набрать, а вот строку константой не выведешь. Просто интересно разобраться, а может комуто и чисто для информации пригодится.
|
|
|
Сказали "Спасибо" vovan_zh
|
|
|
09.09.2010, 23:09
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: WinAVR не нравится символ '\'.
Попробуйте так
PHP код:
|
{0x02,0x04,0x08,0x10,0x20}, /* \ */
{0x00,0x41,0x41,0x7F,0x00}, //]
|
Проблем при компиляции не будет
|
|
|
Эти 2 пользователя(ей) сказали Спасибо harchenko_pavel за это сообщение:
|
|
|
09.09.2010, 23:43
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: WinAVR не нравится символ '\'.
Сообщение от vovan_zh
|
Просто интересно разобраться, а может комуто и чисто для информации пригодится.
|
А в чем собственно разбираться?
// \ - Означает что вы используете много строковый комментарий, который продолжается на следующей строке. И все, что будет находится между
PHP код:
|
// \
и вот тут //
|
Будет воспринято компилятором как комментарий.
Для много строковых комментариев или если вам нужно поместить в комментарий символ \ используйте конструкцию
PHP код:
|
/* \\\\\\\Многостроковый
комментарий\\\\\\\ */
|
Последний раз редактировалось harchenko_pavel; 09.09.2010 в 23:50.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо harchenko_pavel за это сообщение:
|
|
|
10.09.2010, 01:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: WinAVR не нравится символ '\'.
нигде не нашёл -Но- логически - \ в Комментарии - перевод строки
Upd Комментария конечно (мож плохо искал? в ANSI - чё-то навскидку нету.. ![Обижен](images/smilies/icon_beee.gif) ) ( но какая-то ячейка(заблокированная в данное время) глаголит - было- чё-то такое... ![Обижен](images/smilies/icon_beee.gif)
(моя ячейка - в мозгу- проснулась- и нашла чёй-то)
(Нашёл - перевод - Автоматический)
Поскольку эти преобразования происходят, прежде чем все другие обработки можно разделить линии механически обратный слэш-новая строка в любом месте. You can comment out the end of a line. Вы можете закомментировать в конце линии. You can continue a line comment onto the next line with backslash-newline. Вы можете продолжить линию комментарий на следующей строке с обратной косой-строки. You can even split ` /* ', ` */ ', and ` // ' onto multiple lines with backslash-newline. For example: Вы даже можете разделить `/ * ',` * /' и `/ / 'на несколько строк в обратную косую черту-с новой строки. Например:
/\ / \
* *
*/ # /* * / # / *
*/ defi\ * / Определенности \
ne FO\ пе для \
O 10\ O 10 \
20 20
Последний раз редактировалось OlegNZH; 10.09.2010 в 01:49.
|
|
|
Сказали "Спасибо" OlegNZH
|
|
|
10.09.2010, 08:09
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: WinAVR не нравится символ '\'.
Сообщение от OlegNZH
|
нигде не нашёл
|
char '\' at end of line is threaten as that statement is continuing on next
line. '//' comments is mentioned for one line only, and for multiline
comments the right way is '/* */'.
Последний раз редактировалось harchenko_pavel; 10.09.2010 в 08:13.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо harchenko_pavel за это сообщение:
|
|
|
10.09.2010, 17:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: WinAVR не нравится символ '\'
какой "многостроковый комментарий"... Просто обратный слэш отменяет перевод строки. Ваш компилятор получил строку:
"{0x02,0x04,0x08,0x10,0x20}, // {0x00,0x41,0x41,0x7F,0x00}, //]" и нормально её отработал. Не так, как было задумано.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо makakus за это сообщение:
|
|
|
10.09.2010, 17:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: WinAVR не нравится символ '\'
Пост #5 harchenko_pavel ![Улыбка](images/smilies/icon_smile.gif) я-же- поправился потом? ![Улыбка](images/smilies/icon_smile.gif) (машинный перевод, конечно-бяка (я-то понял(в English) ..но не факт-что- к месту его привёл )(криптография,блинн ![Улыбка](images/smilies/icon_smile.gif) ))
|
|
|
Сказали "Спасибо" OlegNZH
|
|
|
10.09.2010, 19:50
|
|
Прописка
Регистрация: 29.08.2005
Сообщений: 139
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: WinAVR не нравится символ '\'
Спасибо всем откликнувшимся. Но насчет коментариев все ясно, если внимательно читали мой первый пост - то вариант из AVRLibs отлично все отработал:
0x02, 0x04, 0x08, 0x10, 0x20,// "\"
понравился еще предложеный вариант /* \ */
Вопрос в был в том что в исходном коде нельзя отправить констатную строчку типа "Users\user\" - все символы '\' будут игнорированы и мы увидим "Usersuser". Может что в компиляторе можно настроить, хотя это не смертельно, просто интересно.
|
|
|
Сказали "Спасибо" vovan_zh
|
|
|
10.09.2010, 20:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: WinAVR не нравится символ '\'
Сообщение от vovan_zh
|
все символы '\' будут игнорированы и мы увидим "Usersuser".
|
А если поставить два символа \\ ? Вместо одного ? Попробуйте.
Последний раз редактировалось andries5; 10.09.2010 в 20:24.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо andries5 за это сообщение:
|
|
|
10.09.2010, 20:25
|
|
Заблокирован
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
|
Re: WinAVR не нравится символ '\'
Сообщение от andries5
|
поставить два символа \\ ? Вместо одного
|
Так и делается, что тут гадать.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:48.
|
|