Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Expanze maker

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Expanze maker

Autor: Neon

15:16:06 20.08.2010

Zdravím v konferenci,

příspěvek by mohl patřit i do diskuse C++, ale jelikož operátor "#@" je IMHO čistě MCVC záležitost, píšu sem. (Téma by mohlo být volným pokračováním http://forum.builder.cz/read.php?123,3294044.)

Mám kód:

[code]
#define MK_CHR(c) #@c
#define MK_STR(c) #c

#define _EOP \x0C // End Of Page

#define EOP MK_CHR(_EOP)
#define EOPS MK_STR(_EOP)

printf("[[[%c - " EOPS " - %s]]]\n", EOP, EOPS);
[/code]

A ten vypíše - pro mě překvapivě "[[[P - _EOP - _EOP]]]".

Proč tomu tak je? Resp. jak makra předefinovat, aby EOP představoval znak, který by se dal vypsat pomocí fputc() jako konec stránky, a aby EOPS představoval řetězec o jednom znaku, který by se dal zapsat do řetězcové konstanty jako "AAA" EOPS "BBB"?

Jasně že mohu psát:

[code]
#define EOP '\x0C'
#define EOPS "\x0C"
[/code]

Ale radši bych zápis pomocí jediné konstatnty, je-li to možné.

Zdravím.

Neon

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: