Makro v C - "text" to uint32_t

Pavel Hudecek edizon na seznam.cz
Úterý Listopad 7 14:32:38 CET 2017


:-)))

aha takže i několik předchozích maker by mohlo fungovat. Tedy kromě těch, 
které by až při běhu programu někdy krachly na zarovnávání, což je 
nepříjemnost této platformy.

Tak dvojnásob díky za vyřešení problému.

Multicharacter constant je jasný favorit, takže vyřešeno.

PH

-----Původní zpráva----- 
From: Jan Waclawek
No ten error (error: label at end of compound statement) potom znamena
presne to co pise: case je pokladane za label a tesne za nim nemoze byt
zatvaracia zatvorka bloku.

Moze tam byt cokolvek, napriklad aj len samotna bodkociarka; ale  pripade
case je z "didaktickych" dovodov vhodne okamzite po napisane case napisat
za neho aj break; no a potom sa Vam tato chyba nestane.


uint32_t  N;

switch (N) {
  case 'abc':
    break;
}


wek


----- Original Message ---------------

Subject: Re: Makro v C - "text" to uint32_t
   From: "Pavel Hudecek" <edizon na seznam.cz>
   Date: Tue, 7 Nov 2017 13:42:55 +0100
     To: "HW-news" <hw-list na list.hw.cz>

>Kontext je čistě testovací kód:
>
>uint32_t  N;
>
>switch (N) {
>        case 'abc':
>}
>
>stejný error ale vznikal i při pokusech s makry:
>
>#define STRtoINT(x) ((x[3])+((x[2])<<8)+((x[1])<<16)+((x[0])<<24))
>#define STRtoINT(s) *(uint32_t *)(s)
>
>Teď jsem zjistil, že proti makrům jako takovým neprotestuje, ale když se
>použijí v tom case, tak to právě u makra zahlásí ten error (a u case je pak
>že název makra nenašel).
>
>PH
>
>-----Původní zpráva----- 
>From: Jan Waclawek
>
>>Ale zajímalo by mě, co přesně znamená ten error.
>
>No to by chcelo vidiet kontext. 



Další informace o konferenci Hw-list