好吧,這真的不應該是困難的,但經過幾次嘗試,我沒有找到任何解決方案.
如何將格式化的字串傳遞給1行中的函式?我想有一個簡單的方法,我可以用于日志/除錯目的,如下所示:
void debug(string s){
if (DEBUG) cerr << s;
}
我希望能夠將格式化的字串發送到此函式,如下所示:
debug("reading %s" % fname);
我的主要目標是在除錯方法中加入盡可能多的功能,這樣每當我想把東西寫入stderr時,我就可以讓生活變得更輕松.
printf解決方案似乎需要很多代碼來進行簡單的格式化,而boost :: format似憾訓傳了一些模糊的型別,不能輕易地用作引數而不總是包含一些.str()的東西.
我是否懶得成為一名C程式員,還是有一種完整的方法可以實作我尚未發現的目標?
uj5u.com熱心網友回復:
您可以使用__VA_ARGS__在fprintf周圍定義一個宏:#define DBGLOG(format, ...) if(DEBUG){ fprintf(stderr, "%s -- %d -- ", __FUNCTION__, __LINE__); fprintf(stderr, format, ##__VA_ARGS__);}
如果DEBUG為true,則輸出函式名稱和行號,然后輸出您想要列印的內容.
例如:
DBGLOG("%d\n", some_integer);
這將在函式和行號前加上整數值并將其列印出來.
uj5u.com熱心網友回復:
哦我的上帝啊,我只能說樓上的方法非常好用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277191.html
標籤:其他技術討論專區
