gcc-2.96: pasting would not give a valid preprocessing token

Míla Kuchta mila.kuchta na atlas.cz
Sobota Listopad 25 21:51:42 CET 2000


Míla Kuchta <mila.kuchta na atlas.cz> wrote:
> 
> Matej Cizek <clawn na volny.cz> wrote:
>>> #define message(string, args...) printf("program: " string, ##args)
>>> 
>>> O co go?
>> 
>> Musi se to napsat jako:
>> #define message(string, args...) printf("program: " string , ##args) 
>> 
>> Cili pridat mezeru pred ', ##args', pokud se totiz to makro rozviji s
>> nulovym poctem parametru v 'args', tak by preprocesor mel pri rozvijeni
>> makra smazat tu carku pred ##args, ale on smaze cely slovo, cili skupinu
>> nemezer, pred '##args'. 
>> V puvodnim zneni by se makro pri nulovym poctu parametru rozvinulo na:
>> 'printf("program: ")' a preprocesor by se jen divil, kam se mu ztratilo to
>> 'string'.
>> Starsi verze gcc hlasej error jen pri pouziti s nulovym poctem
>> parametru.
> 
> Opravdu? To se mi nejak nechce verit, ale zkusil jsem to a stale ta stejna
> hlaska.

Tak jsem to zkusil a k zadnemu necekanemu zkracovani nedoslo. Jak gcc-2.96,
tak egcs-2.91 to zpracuji i v pripade nuloveho poctu parametru, s tim
ze egcs mlci, gcc rve:-).

S pozdravem

Mila Kuchta


Další informace o konferenci Linux