Типобезопасные переменные varargs в C с gcc

Много раз я хочу, чтобы функция получала переменное количество аргументов, заканчивающихся, например, NULL

#define push(stack_t stack, ...) _push(__VARARG__, NULL);
func _push(stack_t stack, char *s, ...) {
    va_list args;
    va_start(args, s);
    while (s = va_arg(args, char*)) push_single(stack, s);
}

Могу ли я указать gcc или clang предупреждать, если foo получает переменные, отличные от char*? Что-то похожее на __attribute__(format), но для нескольких аргументов одного и того же типа указателя.

20
задан mikebloch 13 May 2012 в 06:56
поделиться