Portál AbcLinuxu, 10. května 2025 03:19

Dotaz: cudne makro v C-ecku

19.4.2011 03:12 peter
cudne makro v C-ecku
Přečteno: 239×
Odpovědět | Admin
Ahoj, portujem jeden program napisany v jazyku C a narazil som na toto cudne makro:
#define Round256(p0, p1) \
X##p0 += X##p1;
toto makro je zadefinovane priamo v tele jednej funkcia, v ktorej sa nenachadza ziadna premenna "X". Taktiez neviem co robi znak # v tomto kontexte. Vie mi to niekto vysvetlit? Dakujem.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.4.2011 05:55 burlog
Rozbalit Rozbalit vše Re: cudne makro v C-ecku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj,

znaky ## oznacuji token concatenation. Nejjednodussi bude asi priklad. Makro

Round256(abc, xyz)

se rozbali na

Xabc += Xxyz;

Jinak pomoci parametru -E, lze gcc rici, aby pustilo jen preprocesor, takze se pak lze jednoduse podivat co vzniklo po expanzi vsech maker...

echo "#define Round256(p0, p1) X##p0 += X##p1;\nRound256(abc, xyz)" | gcc -E -
19.4.2011 07:30 lofcek
Rozbalit Rozbalit vše Re: cudne makro v C-ecku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Suhlas ... len v priklade je treba prikazu echo pridat prepinac
-e
.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.