首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >__FILE__、__LINE__和__FUNCTION__在C++中的使用

__FILE__、__LINE__和__FUNCTION__在C++中的使用
EN

Stack Overflow用户
提问于 2009-02-28 07:27:11
回答 3查看 268.9K关注 0票数 180

假设您的C++编译器支持__FILE____LINE____FUNCTION__,那么有什么特殊的理由不使用它们来进行日志记录和调试吗?

我主要关心的是给用户提供误导性的数据-例如,由于优化而报告不正确的行号或函数-或者因此导致性能损失。

基本上,我可以相信__FILE____LINE____FUNCTION__总是做正确的事情吗?

EN

回答 3

Stack Overflow用户

发布于 2009-02-28 13:37:40

仅供参考: g++提供了非标准__PRETTY_FUNCTION__宏。直到现在我才知道C99 __func__ (谢谢埃文!)。我认为当__PRETTY_FUNCTION__可用于额外的类作用域时,我仍然更喜欢它。

PS:

代码语言:javascript
运行
复制
static string  getScopedClassMethod( string thePrettyFunction )
{
  size_t index = thePrettyFunction . find( "(" );
  if ( index == string::npos )
    return thePrettyFunction;  /* Degenerate case */

  thePrettyFunction . erase( index );

  index = thePrettyFunction . rfind( " " );
  if ( index == string::npos )
    return thePrettyFunction;  /* Degenerate case */

  thePrettyFunction . erase( 0, index + 1 );

  return thePrettyFunction;   /* The scoped class name. */
}
票数 32
EN

Stack Overflow用户

发布于 2009-02-27 23:30:38

就我个人而言,我不愿意将它们用于调试消息之外的任何事情。我已经这样做了,但我尽量不向客户或最终用户显示这种信息。我的客户不是工程师,有时也不精通电脑。我可能会将此信息记录到控制台,但是,正如我所说的,除非是为了调试构建或内部工具,否则是不情愿的。不过,我想这取决于你拥有的客户基础。

票数 8
EN

Stack Overflow用户

发布于 2015-02-05 13:36:27

我一直在用它们。我唯一担心的是泄露日志文件中的IP。如果你的函数名真的很好,你可能会让一个商业秘密更容易被揭开。这有点像附带调试符号,只是更难找到一些东西。在99.999%的情况下,不会有什么坏事发生。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/597078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档