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

 
 
> IAR и SPRINTF, Проблемма с sprintf
Vladimir_J
сообщение Dec 2 2009, 09:38
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Доброе время суток smile.gif
У меня возникла проблема. Среда IAR 5.30.

Код:
sprintf( CRC, "%i", _CRC);

_CRC = 135

а в CRC кладется -12851
сам unsigned char CRC[4];

В чем проблема, могет в настройках проекта, но во вкладке library option все перепробовал sad.gif

Плиз подскажите в чем дело .....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
MALLOY2
сообщение Dec 2 2009, 11:26
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
а в CRC кладется -12851


Странный результат smile.gif

CRC это должен быть указатель на буфер, причем размер его должен быть такой чтобы результирующая строка в него поместилась !


sprintf( CRC, "%i", 135);

CRC будет содержать строку "135", функция вернет число 3.

Это функция такая же как и printf, только форматирует в заданный буфер.

В IAR работает без проблем, если есть какие топроблемы смотрите хватает ли вам стека.


P.S. %i работает во всех вариациях библиотеки форматера (General->Library option), также посмотрите на закладке General->Library не стоит там None или Custom, но тогда ошибки были-бы при компиляции.
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 2 2009, 14:03
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Vladimir_J @ Dec 2 2009, 12:38) *
_CRC = 135

Какой тип у переменной _CRC? По правилам должен быть int.
Go to the top of the page
 
+Quote Post
Vladimir_J
сообщение Dec 2 2009, 15:10
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Цитата(scifi @ Dec 2 2009, 18:03) *
Какой тип у переменной _CRC? По правилам должен быть int.


Тип переменной _CRC - int smile.gif, и стэк - 0x80.
Не знаю почему, не работает sad.gif.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Dec 2 2009, 15:24
Сообщение #5


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Vladimir_J @ Dec 2 2009, 18:10) *
Тип переменной _CRC - int smile.gif,

символы с подчеркиванием считаются компилятором особыми (в зависимости от реализации). Попробуйте назвать переменную по-другому и замените в формате
Код
i
на
Код
d
. По стандарту все равно, но ...


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Vladimir_J
сообщение Dec 2 2009, 19:38
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Цитата(mdmitry @ Dec 2 2009, 18:24) *
символы с подчеркиванием считаются компилятором особыми (в зависимости от реализации). Попробуйте назвать переменную по-другому и замените в формате
Код
i
на
Код
d
. По стандарту все равно, но ...


Ок, попробую.
Спасибо всем, реализовал что хотел по другому.
Но буду пробывать, просто уже интересно стало .....
Go to the top of the page
 
+Quote Post
_Bill
сообщение Dec 2 2009, 20:38
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Vladimir_J @ Dec 2 2009, 12:38) *
В чем проблема, могет в настройках проекта, но во вкладке library option все перепробовал sad.gif

Вообще-то, функции форматного вывода требуют много стека, называли величину порядка 400 байт.
Причина редактирования: Нарушение п.3.4 Правил форума.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Dec 3 2009, 09:02
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(mdmitry @ Dec 2 2009, 18:24) *
символы с подчеркиванием считаются компилятором особыми (в зависимости от реализации). Попробуйте назвать переменную по-другому

А нельзя ли подробнее - какие грабли имеются в данном конкретном случае?

Насколько я понимаю, вариантов может быть два:
- такого символа в библиотеках нет, и использовать его - просто некрасиво
- такой символ есть, и вылезет предупреждение "переопределение".


А вообще, в случае неадекватного поведения программы увеличить стек и посмотреть, что будет wink.gif совсем недолго...
Разве что не забыть ПОТОМ разобраться...


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Dec 3 2009, 11:24
Сообщение #9


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(esaulenka @ Dec 3 2009, 12:02) *
Насколько я понимаю, вариантов может быть два:
- такого символа в библиотеках нет, и использовать его - просто некрасиво
- такой символ есть, и вылезет предупреждение "переопределение".

Не только в библиотеках, но и символы самого компилятора. Я не знаю, все ли предупреждения автор включил. А может выключил, чтобы не мешали?
Цитата
А нельзя ли подробнее - какие грабли имеются в данном конкретном случае?

В данном случае это мое предположение, основанное на личном опыте.
Давно имел неосторожность названия переменных и функций начинать с подчеркивания (еще хуже с двух). Проблемы с именами получил мгновенно. Компилятор свои внутренние названия с подчеркиваний начинает, подробности в документации по gcc, для IAR точно не уверен.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 07:06
Рейтинг@Mail.ru


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