ARM \ ADS1.2 \ C-compiler trouble
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Aw 24 мая 2004 г. 13:06

Здравствуйте, уважаемые!

имеем след код:

#include

void tst(char* str){
printf(str);
}

char s[14]="qwert";

int main(void){
s[0]='z';
s[1]='x';
s[2]='z';
s[3]='x';
s[4]='=';
tst(s);
tst((char*)s);
tst("abcdefgh");
}

дизассемблировал, т.к. на выходе было не то...
так вот, только последний вызов tst("abcdefgh"); передает указатель на строку (константу).
tst(s); передает указатель на пустое место (4 байта 0x00),
причем &s=&("abcdefgh")-4
s[4]='='; ссылается на адрес &s+4, вроде верно, но память-под s он выделил мне кажется, не там...
этот же пример работает нормально в Keil 7.10 C51, и в EWARM и в BorlandC.
Кто сталкивался и что же делать? Заранее спасибо.

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

Ответы



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

E-mail: info@telesys.ru