-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

do-while ステートメント

do {

} while (condition);

終了セミコロンが必要です。あなたの直前にreturn

于 2012-05-17T09:33:57.603 に答える
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 に答える
2

do/while() はステートメントであるため、セミコロンで終了する必要があります。あなたがそれらを見落としているかもしれない場所を探してください:)

于 2012-05-17T09:33:34.500 に答える