4

で略語をオフにすることはできgetopt_long()ますか? マニュアルページから:

省略形が一意であるか、定義済みのオプションと完全に一致する場合は、長いオプション名を省略できます。

私が受け取ったコードの仕様では、フラグの完全な完全一致が必要であり、多くのフラグがあるため、これを行いたいと考えています。

4

3 に答える 3

4

コードエイプ、

略語機能を無効にする方法はないようです。この機能を望んでいるのはあなただけではありません。参照: http://sourceware.org/bugzilla/show_bug.cgi?id=6863

残念ながら、上記のリンク先のバグ レポートは "WONTFIX" で解決されているため、glibc 開発者はこのオプションを望んでいないようです。ここでは運が悪いかもしれません:-\

于 2011-03-03T15:41:39.920 に答える
2

getopt() の代わりに argp_parse() を使用する場合 (強くお勧めしますが、BTW)、次の方法でユーザーが入力した正確なフラグにアクセスできます。

状態->argv[状態->次 - 2]

ちょっとしたハックですが、うまくいくはずです。

于 2011-03-03T19:22:51.240 に答える
1

これは完全な解決策ではありませんが、以下のように getopt_long() (通常はスイッチ内) を呼び出した後にユーザーが指定した正確な引数を確認できます。

if (strcmp(argv[optind-1], "--longoption") == 0)

optind は、処理する必要がある次の引数を指します。したがって、optind-1 を使用して元の引数にアクセスできます。

于 2016-10-26T10:03:25.217 に答える