Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
ra3sk
Člen
Avatar
ra3sk:29.5.2016 22:38

Zdravím. Neviem si moc rady s makrami ktoré sú ako výraz napríklad.

#define POSUN ('a' - 'A')
int c;
c=getchar();
if(c >='a' && c<='z'){
        putchar(c - POSUN);
}

Nemám šajnu z akého dôvodu to tak funguje. Môže mi niekto objasniť? Ak nie konkrétne aspoň dať link na nejakú useful page? Díky.

 
Odpovědět
29.5.2016 22:38
Avatar
B42P6
Člen
Avatar
Odpovídá na ra3sk
B42P6:29.5.2016 23:30

Makro ako výraz? Možno si myslel function-like Macro.
Ale toto nieje ten prípad, makro v tvojom kóde je normálne (object-like) makro (aby to bolo function-like macro, zátvorky musia byť hneď za názvom makra(ty tam máš medzeru))

Tvoje makro funguje ako rovnako ako normálne makro, všetko čo urobí je, že nahradí POSUN za ('a' - 'A'),
(Vyzerá to tak že ('a' - 'A') len vypočíta o koľko musí posunúť písmeno aby z neho bolo rovnaké malé písmeno)

Ak by si si chcel objasniť makrá:

https://gcc.gnu.org/…/Macros.html

Nahoru Odpovědět
29.5.2016 23:30
'long long long' is too long for GCC
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.