![](/img/trans.png)
[英]how to use __func__ or __FUNCTION__ constant in recursive code?
[英]__func__ in linux vs __FUNCTION__ in VS
class A
{
public:
void Print()
{
#if defined( win32 )
std::cout << __FUNCTION__ << std::endl;
#else
std::cout << __func__ << std::endl;
#endif
}
};
int main()
{
A ob;
ob.Print();
return 0;
}
上面的代码片段在Windows中打印A::Print
,在Linux中Print
。 在Linux中如何获取classname::functionname
?
您正在寻找没有宏。 但是您可以轻松地从__PRETTY_FUNCTION__
例如:
inline std::string
method_name (const std::string &fsig)
{
size_t colons = fsig.find ("::");
size_t sbeg = fsig.substr (0, colons).rfind (" ") + 1;
size_t send = fsig.rfind ("(") - sbeg;
return fsig.substr (sbeg, send) + "()";
}
#define __METHOD_NAME__ method_name (__PRETTY_FUNCTION__)
然后像这样使用:
#if defined (win32)
std::cout << __FUNCTION__ << std::endl;
#else
std::cout << __METHOD_NAME__ << std::endl;
#endif
为了获得相同的结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.