0

C ++プログラムでgetoptを使用して、コマンドライン引数を解析しようとしています。引数は-dxxx、-s xxx、-?です。-をキャプチャするのに問題がありますか?標準の使用法メッセージを出力したい引数。

while ((c = getopt (argc, argv, "?d:s:")) != -1) {
    switch (c) {
        case 'd':
          ...do stuff
            break;
        case 's':
         ... do stuff
            break;
        case '?':
          // From example on GNU page, seems to capture -d, -s when no args provided.
          // Gets here when -d or -s provided, but no arguments for these options.
        default:
          // shut down
}

頑張ってみても、「-?」を捉えられないようです。独自のオプション。'をキャッチするための特別なトリックはありますか?' そのままで?getoptに正しいパターンを提供しましたか(つまり、'?d:s:')現在、cは'?'に設定されています。'?'であっても、無効なオプションが指定された場合は常に コマンドラインでは提供されません。

みんなありがとう。

4

1 に答える 1

5

getopt'?'欠落しているオプション値または不明なオプションを意味する特別な値として使用されます。getoptしたがって、「-?」を処理するために使用する方法はないと思います。

ヘルプ メッセージには「-h」をお勧めします。それは一般的な慣習です。

于 2012-11-03T11:07:14.307 に答える