【发布时间】:2013-05-31 07:45:02
【问题描述】:
所以我在玩一些 C++ 并得到了前面提到的错误,其中一些代码看起来像这样:
#include <iostream>
using namespace std;
char foodstuffs;
void fruit()
{
cin>>foodstuffs;
switch(foodstuffs)
{
case 'a': goto foo; break;
case 'b': goto fooo; break;
}
}
int main()
{
cout<<"What do you want to eat? (a/b)";
fruit();
foo: cout<<"You eat an apple.";
fooo: cout<<"You eat a banana.";
}
确切的代码要复杂得多,但这只是为了向您展示我遇到的错误。
现在我意识到,出于某种原因,每个人都鄙视“goto”语句,但我的实际代码中充满了太多的 goto,以至于我真的没有时间/耐心回去更改它们。另外,我是一个新手程序员,我发现 goto 和标签非常易于使用。
我的问题是如何预定义这些标签,以便函数 fruit() 知道它们是什么?另外,我需要在不将标签移出主要功能的情况下执行此操作。
【问题讨论】:
-
您会发现 goto 和标签易于使用,但很难返回和更改。我的朋友,这就是为什么每个人都讨厌他们。
-
为什么要转到?正如克里斯所说,每个人都讨厌他们;)
-
重点是,您已经看到了它们如何使代码难以阅读、遵循、理解和维护。
goto有几个有效的用途可以使代码更干净,如果生成的代码更干净,我个人不会惩罚goto,但绝对不是一时兴起的东西。 -
@UrameshiYusuke 那是因为你不能那样做。你需要学会不使用
goto来帮助自己。 -
如果可以的话,我会否决所有不回答问题而是争论是否使用 goto 的人。这还不够:他们还否决了这个问题。您好:问题不在于使用 goto 好不好。