我得到了以下代码,因为我试图了解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;
我必须遵循哪些程序来帮助我解决此类错误?
答案 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()是一个语句,所以你需要用一个半冒号来终止它。寻找可能遗失它们的地方:)