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文字列リテラルの連結を使用して、2つのリテラルを結合するだけです。

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