【发布时间】:2014-01-17 15:13:23
【问题描述】:
我有一个funcA,我每毫秒调用一次。另一个funcB。我想使用 goto 语句。但是当我看流程时(当m_tempdata不是NULL时),打印"stage 2"之后,也是打印"cleanup starts"。通常,我希望在打印"stage 2" 后返回下一轮。我错了吗?
void ClassA::funcA()
{
m_tempdata = m_freedata;
printf("stage 1 \n");
if (NULL == m_tempdata)
{
printf("going cleaning \n" );
goto cleanup;
}
m_freedata = m_tempdata->next;
printf("stage 2 \n");
cleanup: printf("cleanup starts \n");
// ... some additional work todo
}
【问题讨论】:
-
您为什么希望它返回?
cleanup:只是您的陈述之间的标签。此外,这里没有充分的理由证明goto的合理性:v -
种下什么就收什么
-
这应该很有趣...