1

重複の可能性:
メソッド名の出力に使用できるマクロ/キーワードは?

C++で実行時に関数の完全な署名を取得する効果的な方法はありますか?

ロギング目的でこれが必要です。のようなマクロは知って__FUNCTION__いますが、関数名を返すだけなので目的を果たしません。同じ関数のオーバーロードされたバージョンが多数存在する可能性があります。完全な関数シグネチャをログに記録したいと思います。関数のシグネチャが変更されても正しく機能するソリューションを探しています。ソリューションは常に現在の関数シグネチャをログに記録する必要があります

void log(const char* const message)    
    {
        cout << message << endl;
    }

    void ABC(const int& number)
    {
        Log(???); // what should I pass to this function so full signature of the ABC function is logged??
    }
4

2 に答える 2

3

MSDNの定義済みマクロ (C/C++) ページには、使用可能なすべてのマクロのリストがあります。あなたが探しているものは、おそらく、__FUNCSIG__です。

于 2013-02-05T07:11:15.493 に答える
1

一般的にはありませんが、GCC を使用している場合は__PRETTY_FUNCTION__疑似マクロを使用できます....

 void ABC(const int& number) {
     Log(__PRETTY_FUNCTION__);
     /// etc...
 }

Clang/LLVM コンパイラにもあります。

于 2013-02-05T06:18:08.663 に答える