Мне нужно обернуть макрос, чтобы к нему можно было получить доступ с помощью функции. Макрос определяется как:
#define gDbgLog(fmt,...) dbgLog(g_pdbg,MODULE_NAME,__FUNCTION__,fmt,##__VA_ARGS__)
и я попытался обернуть это так:
void pMonDbgLog(char* fmt, ...)
{
va_list args;
va_start(args,fmt);
gDbgLog(fmt,args);
va_end(args);
}
в то время как fmt
, похоже, проходит нормально, аргументы (int), похоже, забиваются. Я называю это так:
int x = 51144;
pMonDbgLog("some text %d",x);
и я получаю "какой-то текст 642129608" при прямом вызове макроса, например DbgLog("some text %d",x);
, работает нормально. Почему это?
dbgLog()
оборачивает vsnprintf()
для создания выходных данных.
gDbgLog("some text %d",x);
. Как вы думаете, зачем вам нужна функция-оболочка? - person bgoldst   schedule 13.08.2016