【问题标题】:Is this function considered terminated? [closed]此功能是否被视为已终止? [关闭]
【发布时间】:2013-06-20 02:58:45
【问题描述】:

假设代码是这样的

void b()
{
...
}
void c()
{
    b();
}



调用 b 后 c 是否被认为已终止但 b 尚未终止?

【问题讨论】:

  • c() 将在 b() 终止后终止 - 至少在您正在谈论的一般概念中
  • 编译器可能会优化您的代码,使其在 b() 之前终止 c(),但您不应考虑优化代码。
  • @Tom van der Woerdt:在从被调用函数返回之前,返回调用函数会进行什么样的优化?
  • @CancerSoftware Tail call optimization
  • @Tom van der Woerdt:向你致敬!

标签: c function procedures


【解决方案1】:

您可以使用调试消息进行验证:

void b()
{
    cout << "b()" << endl;
}
void c()
{
    b();
    cout << "ended c()" << endl;
}

因此,ended c() 出现在 b() 消息之后。

【讨论】:

    【解决方案2】:

    不,一般情况下,c() 不应该在 b() 终止之前终止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-04
      • 2015-08-21
      • 2013-08-28
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      相关资源
      最近更新 更多