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