退出:做什么 我正在阅读一些关于OpenW线的C++代码,我从来没有编写过C++,但是我想知道出口:< /C> >底部附近,后面是“代码>返回错误”;代码>

退出:做什么 我正在阅读一些关于OpenW线的C++代码,我从来没有编写过C++,但是我想知道出口:< /C> >底部附近,后面是“代码>返回错误”;代码>,c++,C++,有退出和没有退出有什么区别 ThreadError otGetParentInfo(otInstance *aInstance, otRouterInfo *aParentInfo) { ThreadError error = kThreadError_None; Router *parent; VerifyOrExit(aParentInfo != NULL, error = kThreadError_InvalidArgs); parent = aInst

有退出和没有退出有什么区别

ThreadError otGetParentInfo(otInstance *aInstance, otRouterInfo *aParentInfo)
{
    ThreadError error = kThreadError_None;
    Router *parent;

    VerifyOrExit(aParentInfo != NULL, error = kThreadError_InvalidArgs);

    parent = aInstance->mThreadNetif.GetMle().GetParent();
    memcpy(aParentInfo->mExtAddress.m8, parent->mMacAddr.m8, OT_EXT_ADDRESS_SIZE);
    aParentInfo->mRloc16 = parent->mValid.mRloc16;

exit:
    return error;
}

这是GOTO语句的标记

它允许程序从(几乎)代码中的任何点跳转到此标记。这通常用于硬件编程或嵌入式编程,例如,如果不使用大量
break
语句或类似情况,就无法从深度嵌套的结构返回

exit:

它是与
goto
一起使用的标签。此
转到
标签
通常用于在出现错误情况时跳出代码块。

其他答案是正确的,但没有明确说明标签可以是任何非保留关键字的单词<代码>退出就是这样一个名字


还有一件事,在你的例子中,没有相应的
goto-exit正常程序执行只是绕过标签,它与功能无关

这里的标签文档看起来像一个转到标签。在任何C++环境下,使用GOTO都是非常令人沮丧的。此外,我真的不知道为什么你读一些线程错误时,你从来没有编程在C++ + @ Maro。goto有着合理的良好用途,比如打破嵌套循环或清理资源(当您不想让RAII包装API公开的每一个小类型时)如果你不想损坏所有的东西,为什么你在C++中写席,当RAII是C++提供的最好的特性之一?他并没有说这是C++中的一个很好的实践。@ Maro的BEY.KO代码是一个嵌入式硬件编程BASH。D提到这是硬件编程中有用的语句。我认为这对于硬件来说是一个很好的实践programming@Albert:他说“通常使用”,它是否有用可能取决于具体情况(即使在嵌入式软件中),但如果你不确定,请避免使用它。这解决了很多困惑。谢谢