1

可能重复:
可用于打印方法名称的宏/关键字?

C++ 中是否有一种有效的方法可以在运行时检索函数的完整签名

我需要这个用于记录目的。我知道宏 like __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 上的Predefined Macros (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 回答