如何让C++函数返回第一行?

Rel*_*lla 0 c++ boost

所以我在win32 C++控制台应用程序中有一个函数,如:

void initFFmpeg(string url ,string container, int w, int h, int fps)
{// we want to return here

    encoder.SetConstants(fps, videoWidth, videoHeight, audioSampleRate);

    // ... more code...

    if (encoder.InitUrl(container, url, outputUserName) == -1)
    {
             // ...some more code...
             // Now we want to return
    } 
    // ... more code...
}
Run Code Online (Sandbox Code Playgroud)

如何启用此类退货?

CB *_*ley 6

通常有一个自然的循环,你可以表达(while,fordo...while),否则就感觉像设计很差想随意跳转到一个函数的顶部.

做你想说的最简单的方法就是goto:

void function()
{
top:
    // ...
    goto top;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

编辑:修复完全伪造的do..while例子.

有些人不喜欢这个词,goto并且会坚持将所有内容包装在永久循环和使用中continue,但它只是另一个名字的转到.

void function()
{
    for (;;)
    {        
    // ...
        continue;
    // ...
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 从技术上讲,它们是一样的.但是代码在循环IMO方面更具表现力.在这种情况下,我会抨击任何使用`goto`的开发人员.尽管如此,我赞成你的帖子. (3认同)
  • @John Dibling:我想我只是使用'break;' 在末尾.拥有比严格必要的更多布尔状态变量使得更难以遵循恕我直言. (2认同)