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