Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.

Diskuze: Makro ako výraz

C++ C a C++ Makro ako výraz

Avatar
ra3sk
Člen
Avatar
ra3sk:

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:

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.