RE: C: deklerace proměnné v bloku CASE (xc8)
Miroslav Draxal
evik na volny.cz
Úterý Srpen 21 15:48:36 CEST 2018
Díky moc za objasnění. Míra
-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
Sent: Tuesday, August 21, 2018 2:24 PM
To: HW-news
Subject: Re: C: deklerace proměnné v bloku CASE (xc8)
Problem spociva v tom, ze "uint8_t y;" je *declaration* a nie *statement*.
"case xxx: yyy" je tzv. *labeled statement* kde podla C99, 6.8.1 yyy musi
byt *statement*.
Okrem uzavretia do bloku (co je *compound statement* a ja by som to
doporucil ako vhodnu prax, okrem ineho aj pre obmedzenie viditelnosti a
zivotnosti deklarovanej lokalnej premennej) sa da urobit napr. aj to, ze
medzi "case xxxx:" a "uint8_t y" sa vlozi jedna bodkociarka.
Mnohi sa uz zrejme stretli s tymto istym obmedzenim v podobe chyby pri
preklade:
{
[...]
goto zzz;
[...]
zzz:
}
t.j. ked za zzz nenasleduje *statement* ale koniec bloku.
wek
----- Original Message ---------------
Subject: C: deklerace proměnné v bloku CASE (xc8)
From: "Miroslav Draxal" <evik na volny.cz>
Date: Tue, 21 Aug 2018 13:15:46 +0200
To: "'HW-news'" <hw-list na list.hw.cz>
>Dobrý den,
>
>Dneska jsem narazil na zajímavou věc a nevím proč se tak děje
>
>
>
>Pokud
>
>
>
>switch (x)
>
> case 1:
>
> uit8_t y;
>
>
>
>při překladu skončí chybou error: (317) "(" expected
>
>
>
>switch (x)
>
> case 1:
>
> ; // nebo NOP(); nebo
>jakýkoliv programový řádek
>
> uit8_t y;
>
>
>
>uľ přeloľí OK.
>
>?????
>
>Díky za objasnění záhady, Míra
>
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list