3

这是我所拥有的(message() 是来自第三方库的专用日志记录功能):

#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”。有可能做我想做的事吗?

4

1 回答 1

5

不要#fmt加引号。只需使用字符串文字连接来连接两个文字。

#define LOG(fmt, ...) message("%s %s(): " fmt, __FILE__, __func__, __VA_ARGS__);
于 2012-05-10T14:29:06.350 回答