G++ 在返回之前预期';'

g++ expected ';' before return

本文关键字:返回 G++      更新时间:2023-10-16

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

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

我的水晶球告诉我,你在return之前缺少一个;

while(next_option!=-1); // <--- semi-colon
return 0;

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

改变:

while(next_option!=-1)

自:

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

while(next_option!=-1)之后;

要遵循的过程是阅读错误消息,然后修复它警告您的内容(在本例中为缺少的分号)。

do-while 语句

do {
} while (condition);

需要一个终止分号。就在你return之前.

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