2012-05-17 108 views
-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; 

我必須遵循什麼程序來幫助我解決這類錯誤?

+0

這是如何本地化...這不是第一次也不是最後一次有人會得到這個錯誤。 –

回答

7

我的水晶球告訴我,你就錯過一個;return

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

+1,但我想要你的水晶球! LOL –

+0

非常感謝你,我似乎被卡住了,我正在看我的代碼喜歡高飛,一切似乎都是正確的。對不起,我浪費了每個人的時間 – sparky

6

錯誤消息告訴您確切問題是什麼 - 你已經丟失;

變化:

while(next_option!=-1) 

到:

while(next_option!=-1); 
6

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

接下來的過程是讀取錯誤消息,然後修復它警告你的事情(在這種情況下,缺少分號)。

2

你的do/while()是一個語句,所以你需要用一個分號結束它。尋找地方,你可能會丟失他們:)

6

的do-while語句

do { 

} while (condition); 

需要終止的分號。就在你的return之前。