Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ICC6, строки и scanf
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
lolful
Как грамотно и безопасно просканировать строчку в ICCAVR6 с помощью scanf? То есть надо защититься от переполнения буфера. Делаю так:
Код
char param[2][20];
sscanf(str, "%19s %19s", param[0], param[1], 20);
Микроконтроллер Mega128 зависает, как и симулятор в AVRStudio 4.
Палыч
ICCAVR6 - это среда разработки от ImageCraft Creations Inc.? Если - да, то посмотрите в Help'е: функция sscanf не поддерживает спецификатор формата %s
lolful
Да, ICC - это Image Craft.
В хелпе действительно нет %s в строке формата. Хм, странно. Но если пишешь
Код
sscanf(str, "%s %s", param[0], param[1]);
то срабатывает нормально, но тогда нужно как-то придумать способ не вылезти за пределы буфера.
А как дела обстоят в 7й и 8й версиях ICCAVR?
Палыч
Цитата(lolful @ Aug 1 2011, 07:18) *
А как дела обстоят в 7й и 8й версиях ICCAVR?
В версии 7.22 раздел Help'а "Standard IO functions" аналогичен соответствующему разделу из версии 6
demiurg_spb
Цитата(lolful @ Aug 1 2011, 07:18) *
нужно как-то придумать способ не вылезти за пределы буфера.
fgets в помощь...
Цитата
А как дела обстоят в 7й и 8й версиях ICCAVR?
Также хреново. ICCAVR, как и CVAVR - пример самых неудачных компиляторов.
Мой вам дружеский совет: переходите на avr-gcc или iar, пока не поздно.
lolful
Спасибо.
Цитата
Мой вам дружеский совет: переходите на avr-gcc или iar, пока не поздно.
К сожалению, уже поздно... Хотелось бы конечно IAR, но он, зараза, дорогой, да и проекты иметь в 2х средах не комильфо.
Палыч
Цитата(demiurg_spb @ Aug 1 2011, 10:01) *
ICCAVR, как и CVAVR - пример самых неудачных компиляторов.
Мой вам дружеский совет: переходите на avr-gcc или iar, пока не поздно.
Присоединяюсь к совету. Сам когда-то начинал с ICC версии 6 потому, что начальльство не спросясь совета купило его. "Сполз" с него, когда ознакомился с седьмой версией от ImageCraft: залатали "дыры", но генерация кода стала просто безобразной... Лучше перейти на другую среду как можно быстрее - со временем переход будет всё более затруднительней. Если пугает высокая цена IAR, стоит посмотреть в сторону gcc.
Leonmezon
1. У ICC есть одна особенность: в нем нечего нет (практически нет библиотек.... да и примеры в общем бесполезны, поэтому очень много приходится писать собственными руками, особенно под xmega (для которой есть только файлы описание регистров и все) - поэтому чтоб написать более менее приходится сильно изворачиваться, изучать подробно даташиты (особенно по регистрам...) - в этом есть определенный плюс, по сравнению с IAR - где многие научились использовать готовые библиотеки и не понимают что делают (точнее даже как работает определенный код, взаимодействие с регистрами...).
2. Вопрос цены немало важен (особенно если компилятор должен быть лицензионный).
3. По gcc - можно использовать, но на мой взгляд (если судить по реализации в AVR Studio 5) - Atmel пошла по пути IAR - компилятор для "супер" "мега" проектов с кучей всего, причем взять надо обязательно самый старший из линейки МК. А использовать gcc - в чистом виде (без заточки под AVR)- будет намного труднее.
А по оптимизации: есть более страшие версии ICC (в любом случае дешевле IAR в 7 раз) - правда не знаю насколько они оптимизируют rolleyes.gif
demiurg_spb
Цитата(Leonmezon @ Aug 2 2011, 21:46) *
1. У ICC есть одна особенность: в нем нечего нет (практически нет библиотек....
Например каких?
Цитата
да и примеры в общем бесполезны, поэтому очень много приходится писать собственными руками, особенно под xmega (для которой есть только файлы описание регистров и все) - поэтому чтоб написать более менее приходится сильно изворачиваться, изучать подробно даташиты (особенно по регистрам...) - в этом есть определенный плюс, по сравнению с IAR - где многие научились использовать готовые библиотеки и не понимают что делают (точнее даже как работает определенный код, взаимодействие с регистрами...).
О каких таких библиотеках в IAR ведёте речь?
Цитата
3. По gcc - можно использовать, но на мой взгляд (если судить по реализации в AVR Studio 5) - Atmel пошла по пути IAR - компилятор для "супер" "мега" проектов с кучей всего, причем взять надо обязательно самый старший из линейки МК. А использовать gcc - в чистом виде (без заточки под AVR)- будет намного труднее.
Кто здесь старший? Куда пошёл? Скоро-ли вернётся? Ни одного вразумительного слова...
Цитата
А по оптимизации: есть более страшие версии ICC (в любом случае дешевле IAR в 7 раз) - правда не знаю насколько они оптимизируют rolleyes.gif
А я знаю. Плохо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.