LINUX.ORG.RU

Mutiple args define


0

0

Привет All, Может кто нибудь подсказать возможно ли создать макрос с неопределенным количеством аргументов по аналогии с sprintf? Если да, то как?


#define p(fmt, args...)  \
        printf(fmt , ##args)

обратите внимание на пробел перед запятой после fmt.

idle ★★★★★
()
Ответ на: комментарий от idle

Вот что получается

#define t_sprintf(buffer,format, args...) \ sprintf(buffer,format,##args)

error C2010: '.' : unexpected in macro formal parameter list

mumg
() автор топика
Ответ на: комментарий от mumg

varargs макросы это gcc extension, насколько я знаю. поэтому не переносимо. или они уже заявлены в стандарте, кто-нибудь знает?

idle ★★★★★
()
Ответ на: комментарий от idle

Они заявлены в стандарте -- в С99, которого полностью до сих пор даже gcc не поддерживает, не говоря уж о прочем. Правда, что касается variadic macros, то их gcc 3 поддерживает. Только синтаксис там другой: #define t_sprintf(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)

aa5779
()
Ответ на: комментарий от idle

этот способ подойдет лишь для такого вариант как и при пользовании функцией printf а если надо сделать действительно переменное количество параметров, то это возможно лишь для некоторых случаев...

Begemotik
()
Ответ на: комментарий от Begemotik

а что вы собственно имели в виду, позвольте узнать? что такое "действительно переменное" количество параметров?

aa5779
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.