-1

我得到了以下代码,因为我试图了解 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;

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

4

5 回答 5

7

我的水晶球告诉我你错过了一个;前一个return

while(next_option!=-1); // <--- semi-colon
return 0;
于 2012-05-17T09:32:48.883 回答
6

错误消息准确地告诉您问题所在 - 您缺少;.

改变:

while(next_option!=-1)

至:

while(next_option!=-1);
于 2012-05-17T09:32:49.640 回答
6

你需要一个;after while(next_option!=-1)

要遵循的过程是阅读错误消息,然后修复它警告您的事情(在这种情况下,缺少分号)。

于 2012-05-17T09:32:50.830 回答
6

do-while 语句

do {

} while (condition);

需要一个终止分号。就在您的return.

于 2012-05-17T09:33:57.603 回答
2

你的 do/while() 是一个语句,所以你需要用分号终止它。寻找你可能错过的地方:)

于 2012-05-17T09:33:34.500 回答