Re: #define (format, ...)
От: Кодт Россия  
Дата: 10.06.08 13:39
Оценка: :)
Здравствуйте, <Аноним>, Вы писали:

Можно вместо функции сделать замыкание — временный объект с методом:
// исходный API
void _gdTestErrorMsg(const char* file, int line, const char* format, ...);
void _gdTestErrorMsg(const char* file, int line, const char* format, va_args); // без этой функции придётся туго

// добавляем замыкание
struct CTestErrorMsg
{
    const char* file;
    int line;
    
    CTestErrorMsg(const char* f, int l) : file(f), line(l) {}
    void apply(const char* format, ...) const // или operator(), если больше нравится
    {
        va_list args;
        va_start(args, format);
        _gdTestErrorMessageV(file, line, format, args);
        va_end(args);
    }
};

#define gdTestErrorMsg /*(format,...)*/ CTestErrorMsg(__FILE__,__LINE__).apply /*(format,__VA_ARGS__)*/
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.