繁体   English   中英

linux中的__func__与VS中的__FUNCTION__

[英]__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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM