g ++期待';'回来之前

时间:2012-05-17 09:31:08

标签: c++ g++ return

我得到了以下代码,因为我试图了解getopt_long的用法。一切似乎都很好,但我得到“预期”;'在返回之前“。我错过了什么?谢谢你们。

int next_option;
const string short_options = "a:bcde";
const struct option long_options[] = 
{
    {"op1", 1, NULL, 'a'},
    {"op2", 1, NULL, 'b'},
    {"op3", 1, NULL, 'c'},
    {"op4", 0, NULL, 'd'},
    {"op5", 0, NULL, 'e'},
    { NULL,0, NULL, 0}
};

do
{
    next_option = getopt_long(argc,argv,short_options.c_str(),long_options,NULL);

    switch(next_option)
    {
        case 'a':
        cout <<" ";
        break;

        case 'b':
        cout <<" ";
        break;

        case 'c':
        cout <<" ";
        break;

        case 'd':
        cout <<" ";
        break;

        case 'e':
        cout <<" ";
        break;

        case '?': // invalid option
        cout <<" ";
        break;

        case -1:  //no more option
        cout <<" ";
        break;

        default:
        cout <<" ";
        break;
    }

}
while(next_option!=-1)
return 0;

我必须遵循哪些程序来帮助我解决此类错误?

5 个答案:

答案 0 :(得分:7)

我的水晶球告诉我你在;

之前错过了return
while(next_option!=-1); // <--- semi-colon
return 0;

答案 1 :(得分:6)

错误消息告诉您完全问题是什么 - 您遗失了;

变化:

while(next_option!=-1)

为:

while(next_option!=-1);

答案 2 :(得分:6)

;后需要while(next_option!=-1)

要遵循的步骤是阅读错误消息,然后修复它警告你的事情(在这种情况下,丢失的分号)。

答案 3 :(得分:6)

do-while语句

do {

} while (condition);

需要终止分号。就在您return之前。

答案 4 :(得分:2)

你的do / while()是一个语句,所以你需要用一个半冒号来终止它。寻找可能遗失它们的地方:)