реклама на сайте
подробности

 
 
> глюки с форматированным выводом
Sergio_chiper
сообщение Oct 3 2007, 21:12
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 20-10-06
Пользователь №: 21 521



Заметил неприятную фичу. Если в printf или его производных не соответствуют строка форматирования и список параметров, то стек неприлично загаживается. Есть ли способы вылечить этот эффект опциями компилятора?
Система жутко нестабильна, надо весь пользовательский ввод обрамлять весьма интеллектуальными фильтрами, лениво... Пользователи пока не допёрли, что невинная комбинация %f во вводимых данных сносит крышу напрочь smile.gif

И вообще, это фича ИАРа или особенность ARMов? Склоняюсь к первому, но проверять на других компиляторах самому, извините, == маразм.
Обрисуйте ситуацию, кому не лень, пжлст.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Oct 3 2007, 21:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Дык уже многократно говорено, что printf/sprintf в IAR требует большого стека. Тем более с полнофункциональными опциями (вывод float).
Go to the top of the page
 
+Quote Post
Sergio_chiper
сообщение Oct 3 2007, 22:05
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 20-10-06
Пользователь №: 21 521



Да он работает замечательно, но стоит дать в строке форматирования ссылку на несуществующий в списке параметров элемент, тут же все рушится.
Т.е. пишем строчку printf(" %d %d %d", a, b); и каюк. Похоже, компилятор достаёт из стека параметры вместо того, чтобы запомнить указатель и вернуть его при выходе. У кейла для 166 с этим проблем нет, да и вообше я не припомню компилятора, который бы так плохо себя вёл...
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 4 2007, 05:14
Сообщение #4


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Sergio_chiper @ Oct 4 2007, 02:05) *
Т.е. пишем строчку printf(" %d %d %d", a, cool.gif; и каюк.

А зачем свои ошибки приписывать компилятору.
Это типа: с больной головы на здоровую. smile.gif
Не обижайтесь, это шутка.
Go to the top of the page
 
+Quote Post
Sergio_chiper
сообщение Oct 4 2007, 07:55
Сообщение #5





Группа: Новичок
Сообщений: 6
Регистрация: 20-10-06
Пользователь №: 21 521



Тут ещё такое дело. Я весь ввод пользователя посылаю в поток отладки, а он проходит через vsprintf без параметров. Весело получается. Сам-то я шлю в дебаг с параметрами и, как правило, они соответствуют строке форматирования smile.gif
Дурдом, проще свой форматёр написать.

Сообщение отредактировал Sergio_chiper - Oct 4 2007, 07:56
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Oct 4 2007, 08:44
Сообщение #6


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(Sergio_chiper @ Oct 4 2007, 10:55) *
Тут ещё такое дело. Я весь ввод пользователя посылаю в поток отладки, а он проходит через vsprintf без параметров. Весело получается. Сам-то я шлю в дебаг с параметрами и, как правило, они соответствуют строке форматирования smile.gif
Дурдом, проще свой форматёр написать.

А зачем при неформатированом выводе использовать vsprintf? Напишите свой xprint, который просто символы в буфер пихает. На стеке сэкономите кроме всего прочего.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 23:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016