1
我需要打包一個宏以便可以使用函數訪問宏。 宏的定義如下:使用可變數量的參數換行宏
#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(「一些文本%d」,x);'。你爲什麼認爲你需要一個函數包裝? – bgoldst