Vladimir_J 0 2 декабря, 2009 Опубликовано 2 декабря, 2009 · Жалоба Доброе время суток :) У меня возникла проблема. Среда IAR 5.30. Код: sprintf( CRC, "%i", _CRC); _CRC = 135 а в CRC кладется -12851 сам unsigned char CRC[4]; В чем проблема, могет в настройках проекта, но во вкладке library option все перепробовал :( Плиз подскажите в чем дело ..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 2 декабря, 2009 Опубликовано 2 декабря, 2009 · Жалоба а в CRC кладется -12851 Странный результат :) CRC это должен быть указатель на буфер, причем размер его должен быть такой чтобы результирующая строка в него поместилась ! sprintf( CRC, "%i", 135); CRC будет содержать строку "135", функция вернет число 3. Это функция такая же как и printf, только форматирует в заданный буфер. В IAR работает без проблем, если есть какие топроблемы смотрите хватает ли вам стека. P.S. %i работает во всех вариациях библиотеки форматера (General->Library option), также посмотрите на закладке General->Library не стоит там None или Custom, но тогда ошибки были-бы при компиляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 2 декабря, 2009 Опубликовано 2 декабря, 2009 · Жалоба _CRC = 135 Какой тип у переменной _CRC? По правилам должен быть int. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vladimir_J 0 2 декабря, 2009 Опубликовано 2 декабря, 2009 · Жалоба Какой тип у переменной _CRC? По правилам должен быть int. Тип переменной _CRC - int :), и стэк - 0x80. Не знаю почему, не работает :(. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 2 декабря, 2009 Опубликовано 2 декабря, 2009 · Жалоба Тип переменной _CRC - int :), символы с подчеркиванием считаются компилятором особыми (в зависимости от реализации). Попробуйте назвать переменную по-другому и замените в формате i на d . По стандарту все равно, но ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vladimir_J 0 2 декабря, 2009 Опубликовано 2 декабря, 2009 · Жалоба символы с подчеркиванием считаются компилятором особыми (в зависимости от реализации). Попробуйте назвать переменную по-другому и замените в формате i на d . По стандарту все равно, но ... Ок, попробую. Спасибо всем, реализовал что хотел по другому. Но буду пробывать, просто уже интересно стало ..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bill 0 2 декабря, 2009 Опубликовано 2 декабря, 2009 · Жалоба В чем проблема, могет в настройках проекта, но во вкладке library option все перепробовал :( Вообще-то, функции форматного вывода требуют много стека, называли величину порядка 400 байт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба символы с подчеркиванием считаются компилятором особыми (в зависимости от реализации). Попробуйте назвать переменную по-другому А нельзя ли подробнее - какие грабли имеются в данном конкретном случае? Насколько я понимаю, вариантов может быть два: - такого символа в библиотеках нет, и использовать его - просто некрасиво - такой символ есть, и вылезет предупреждение "переопределение". А вообще, в случае неадекватного поведения программы увеличить стек и посмотреть, что будет ;) совсем недолго... Разве что не забыть ПОТОМ разобраться... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба Насколько я понимаю, вариантов может быть два: - такого символа в библиотеках нет, и использовать его - просто некрасиво - такой символ есть, и вылезет предупреждение "переопределение". Не только в библиотеках, но и символы самого компилятора. Я не знаю, все ли предупреждения автор включил. А может выключил, чтобы не мешали? А нельзя ли подробнее - какие грабли имеются в данном конкретном случае? В данном случае это мое предположение, основанное на личном опыте. Давно имел неосторожность названия переменных и функций начинать с подчеркивания (еще хуже с двух). Проблемы с именами получил мгновенно. Компилятор свои внутренние названия с подчеркиваний начинает, подробности в документации по gcc, для IAR точно не уверен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться