Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Проблема с va_start


Автор: Oleg IT 6.12.2004, 11:22
Компиляция библиотеки требует использования одного аргумента в макросе va_start (библиотека содержит данный макрос в заголовочном файле). А компиляция модуля использующего данную библиотеку требует использования двух аргументов. Man на va_start говорит, что надо использовать два аргкмента. Как победить эту проблему?

Автор: Mad 6.12.2004, 14:38
Внимательно посмотри #ifdef в хидере либы, скорей всего просто надо какойто #define сделать

Автор: azesmcar 6.12.2004, 15:41
Я передаю количество элементов...
Код

void DeleteFiles( int count, ... )
{
va_list ap;
va_start( ap, count );
for ( int i = 0; i < count; ++i )
{
 DeleteFile( va_arg( ap, char* ) );
}
va_end( ap );
}

Приблизительно так...
Добавлено @ 15:48
А если формат получаешь то так...
Код

int sprintf(char * buf, const char *fmt, ...)
{
va_list args;
int i;

va_start(args, fmt);
i=vsprintf(buf,fmt,args);
va_end(args);
return i;
}

Код был любезно украден из source-ов линукса...smile

Автор: Oleg IT 6.12.2004, 17:00
Спасибо, любезные smile
Дошло. Оказывается есть два хедера с этим va_start. Один совместимый с Windows, другой оригинальный. Так я в проекте оба включал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)