可能重复:
Macro / keyword which can be used to print out method name?
在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??
}
答案 0 :(得分:3)
Predefined Macros (C/C++) page on MSDN包含所有可用宏的列表。您正在寻找的那个可能是__FUNCSIG__
。
答案 1 :(得分:1)
一般情况下没有,但如果使用GCC,你可以使用__PRETTY_FUNCTION__
伪宏....
void ABC(const int& number) {
Log(__PRETTY_FUNCTION__);
/// etc...
}
Clang / LLVM编译器也有它。