我知道每个人都讨厌gotos。在我的代码中,出于我已经考虑并且很舒服的原因,他们提供了一个有效的解决方案(即,我不是在寻找“不这样做”作为答案,我理解您的保留意见,并理解为什么我使用它们无论如何)。是否可以将标签的地址存储在变量中并使用goto跳转到该变量?
到目前为止他们一直很棒,但我想要扩展功能,这样我就必须能够存储指向标签的指针,然后再去找它们。
如果此代码工作,它将代表我需要的功能类型。但它不起作用,30分钟的谷歌搜索没有透露任何东西。有没有人有任何想法?
int main (void)
{
int i=1;
void* the_label_pointer;
the_label:
the_label_pointer = &the_label;
if(i--)
goto *the_label_pointer;
return 0;
}
你能解释一下为什么你需要将这些标签存储指针? – 2009-11-22 06:23:10
我正在实现一个有限状态机,基于Remo.D在这篇文章中的回答http://stackoverflow.com/questions/132241/我的版本已经发展到比这更多地涉及,但这代表了基本结构体。到目前为止,它一直很有效,但我想通过在状态转换时设置的一些变量或通过回调或某物访问某些上下文来访问调用状态和当前状态。 – 2009-11-22 06:36:01
重复http://stackoverflow.com/questions/938518/c-c-goto – qrdl 2009-11-22 07:52:52