Co może być nie tak w moim kodzie C w CodeVisionAVR - nie działa na AVR?
CodeVisionAVR - co robię nie tak?
From: "Pinarczuk" <pinarczuk_at_nospam_poczta.onet.pl>
Subject: CodeVisionAVR - co robię nie tak?
Date: 23 Sep 2004 18:50:56 +0200
Witam.
Czy może ktoś podpowiedzić mi co jest nie tak w moim krótkim kodzie w
CodeVisionAVR. Kod kompiluje się bezbłędnie, konfiguracja jest ok, dlaczego
jednak program nie działa. Czy ktoś może sprawdzić to u siebie na komputerze i
AVRe, bo wydaje mi się że tutaj źle kompiluje CodeVisionAVR.
...
char c;
char buffer[32];
char *s;
...
while (1)
{
//Odbiór stringa
s=buffer;
while(c=getchar()!=0 ){
*s=c;
s++;
}
*s=0;
//Wysłanie stringa
s=buffer;
while( *s != 0 ){
putchar(*s);
s++;
}
}
}
Z góry dzięki za odpowiedź bo męczę się chyba nad tym juz z tydzień.
Pozdrawiam.
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!uw.edu.pl!news.pw.edu.pl!not-for-mai
From: czerstwy <czebaka_at_nospam_o2.pl>
Subject: Re: CodeVisionAVR - co =?ISO-8859-2?Q?robi=EA_nie_tak=3F?=
Date: Fri, 24 Sep 2004 10:40:48 +0200
Pinarczuk napisał(a):
while(c=getchar()!=0 ){
powinno być:
while ( (c=getchar()) != 0 )
przy założeniu że chcesz zapisać pobrany znak do zmiennej c i porównać z
zerem, no i jesteś pewien, że ostatni znak będzie zerem
Pozdrawiam
czerstwy
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.atman.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Jan Dubiec <jdx_at_nospam_SPAMTRAP.slackware.pl>
Subject: Re: CodeVisionAVR - co =?iso-8859-2?Q?robi=EA?= nie tak?
Date: Fri, 24 Sep 2004 08:55:52 +0000 (UTC)
Pinarczuk wrote on 23 Sep 2004 18:50:56 +0200:
[.....]
AVRe, bo wydaje mi się że tutaj źle kompiluje CodeVisionAVR.
Kompilator to chyba kompiluje poprawnie, problem w tym że nie jest
zbyt dobry ponieważ nie wyrzuca ostrzeżenia na takie coś:
while(c=getchar()!=0 ){
Występuje tutaj niejednoznaczność i kompilator generuje kod taki jak to
przewidzieli jego twórcy aczkolwiek nie taki jakiego Ty byś oczekiwał. :-)
Jak mniemam ten wiersz powinien wyglądać tak:
while ((c = getchar()) != 0) {
a ze względu na brak nawiasów kompilator prawdopodobnie potraktował go tak:
while (c = (getchar() != 0)) {
Przyzwoity kompilator natychmiast wyrzuci ostrzeżenie w takim miejscu.
Z góry dzięki za odpowiedź bo męczę się chyba nad tym juz z tydzień.
Tydzień? Przez ten czas możnaby spokojnie przeczytać kilka pierwszych
rozdziałów jakiejś dobrej książki o C gdzie są opisane takie rzeczy. :-)
Regards,
/J.D.
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Q" <oink_at_nospam_gazeta.gov.pl>
Subject: Re: CodeVisionAVR - co robię nie tak?
Date: Fri, 24 Sep 2004 16:54:29 +0200
Tydzień? Przez ten czas możnaby spokojnie przeczytać kilka pierwszych
rozdziałów jakiejś dobrej książki o C gdzie są opisane takie rzeczy. :-)
dokladnie;
polecam koledze nauke podstaw programowania w C;
/oczywiscie na 80486 'lub wyzsze' w np. bc
a nie na avr w cvavr...
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!hs001.slackware.pl!new
From: Jan Dubiec <jdx_at_nospam_SPAMTRAP.slackware.pl>
Subject: Re: CodeVisionAVR - co =?iso-8859-2?q?robi=EA?= nie tak?
Date: 24 Sep 2004 18:32:50 +0200
On Fri, 24 Sep 2004 16:54:29 +0200, "Q" <oink_at_nospam_gazeta.gov.pl> wrote:
[.....]
polecam koledze nauke podstaw programowania w C;
/oczywiscie na 80486 'lub wyzsze' w np. bc
a nie na avr w cvavr...
C to jest C. Poprawnie napisany kod w ANSI C [*] da się skompilować
praktycznie każdym współczesnym kompilatorem i będzie on działał
poprawnie. Oczywiście chodzi o kod nie wykorzystujący jakichś cech
lub bibliotek systemowych specyficznych dla danej architektury.
Generalnie należy nauczyć się odróżniać język C od kompilatora tego
języka oraz od bibliotek systemowych. Aha, no i warto również nauczyć
się odróżniać kompilator i linker od IDE. :-)
[*] Oczywiście są inne (tzn. nowsze) standardy C, ale ANSI C jest obecnie
"najmniejszym wspólnym mianownikiem"
Regards,
/J.D.
--
Jan Dubiec, jdx#slackware.pl, mobile: +48 506 790442
Głęboka wiara wymaga płytkiego rozumu i nikłej wiedzy.
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Q" <oink_at_nospam_gazeta.gov.pl>
Subject: Re: CodeVisionAVR - co robię nie tak?
Date: Fri, 24 Sep 2004 16:57:05 +0200
AVRe, bo wydaje mi się że tutaj źle kompiluje CodeVisionAVR.
poza tym:
cvavr ma code wizarda, sporo przykladow jest na sieci, ...
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Krzysztof Gawryś" <profrook_TO_USUN__at_nospam_o2.pl>
Subject: Re: CodeVisionAVR - co robię nie tak?
Date: Fri, 24 Sep 2004 12:17:12 +0200
while (1)
{
//Odbiór stringa
s=buffer;
while(c=getchar()!=0 ){
*s=c;
s++;
}
*s=0;
while(1)
{
s=buffer;
while(c=getchar())
*s++ = c;
*s = 0;
...
Krzysiek
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: CodeVisionAVR - co robię nie tak?
Date: Fri, 24 Sep 2004 18:48:52 +0200
On 23 Sep 2004 18:50:56 +0200, Pinarczuk wrote:
while (1)
{
//Odbiór stringa
s=buffer;
while(c=getchar()!=0 ){
*s=c;
s++;
}
*s=0;
Pomijajac co koledzy slusznie wytkneli, to jeszcze:
a) czy na pewno chcesz zeby program wczytywal dane az
do znaku 00h ? Trudno taki wyslac z peceta.
b) przyzwoitosc nakazuje sprawdzac czy bufor sie nie przepelnia ..
J.
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai