Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR и SPRINTF
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Vladimir_J
Доброе время суток smile.gif
У меня возникла проблема. Среда IAR 5.30.

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

_CRC = 135

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

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

Плиз подскажите в чем дело .....
MALLOY2
Цитата
а в CRC кладется -12851


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

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


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

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

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

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


P.S. %i работает во всех вариациях библиотеки форматера (General->Library option), также посмотрите на закладке General->Library не стоит там None или Custom, но тогда ошибки были-бы при компиляции.
scifi
Цитата(Vladimir_J @ Dec 2 2009, 12:38) *
_CRC = 135

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


Тип переменной _CRC - int smile.gif, и стэк - 0x80.
Не знаю почему, не работает sad.gif.
mdmitry
Цитата(Vladimir_J @ Dec 2 2009, 18:10) *
Тип переменной _CRC - int smile.gif,

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


Ок, попробую.
Спасибо всем, реализовал что хотел по другому.
Но буду пробывать, просто уже интересно стало .....
_Bill
Цитата(Vladimir_J @ Dec 2 2009, 12:38) *
В чем проблема, могет в настройках проекта, но во вкладке library option все перепробовал sad.gif

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

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

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


А вообще, в случае неадекватного поведения программы увеличить стек и посмотреть, что будет wink.gif совсем недолго...
Разве что не забыть ПОТОМ разобраться...
mdmitry
Цитата(esaulenka @ Dec 3 2009, 12:02) *
Насколько я понимаю, вариантов может быть два:
- такого символа в библиотеках нет, и использовать его - просто некрасиво
- такой символ есть, и вылезет предупреждение "переопределение".

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

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