3
之間。這裏的文字是我(消息()是從第三方庫專門的記錄功能):C/C++如何展開宏參數爲報價
#define LOG(fmt, ...) message("%s %s(): #fmt", __FILE__, __func__, __VA_ARGS__);
所以我希望能夠做的事情,如:
LOG("Hello world")
LOG("Count = %d", count)
而且把它擴展爲:
message("%s %s(): Hello world", __FILE__, __func__);
message("%s %s(): Count = %d", __FILE__, __func__, count);
但#fmt的事情是行不通的。它不評估宏參數並打印爲「#fmt」。是否有可能做我想做的事情?
謝謝,這個工作,但實際上是一個無關的原因,我的第一個例子不工作(LOG(「世界,你好」),即不使用任何參數)。然而,有關於該主題已經商量好了在這裏:http://stackoverflow.com/questions/3576396/variadic-macros-with-0-arguments-in-c99 – Rich