Ответ: Сталкивался с такою проблемой. Решение:(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено KAN 06 ноября 2003 г. 06:44
В ответ на: Непонятная ( для меня ситуация ) в Иар-овском C. ( Проц - мега128). отправлено Владимир__ 06 ноября 2003 г. 01:54

То как Вы строку представили - значит, что она лежит в памяти процессора без предварительной инициализации. Т е - попробуйте в C-SPY сбросить ядро и посмотрите в память - строка уже будет там лежать (!). И далее - в программе нет кода который ее туда бы заносил. А в реальности-то (естесственно) никто предварительно ее в память не ложил.
Есть 2 решения проблемы:
1. Использовать sprintf_P
2. Есть галочка в опциях компилера (не помню точного названия) типа "initialize strings" - ее легко найти. Это скажет компилятору ложить строку в память при инициализации.

Но учитите, что второй случай будет предпочтительней тогда, когда Вы хотите потом менять содержимое строки, иначе используйте sprintf_P. Так-же в тему: рекомендую освоить работу с "кучей" (опрераторы new и delete) - это очень помогает экономить память при работе с массивами (в частном случае со строками).

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru