で略語をオフにすることはできgetopt_long()
ますか? マニュアルページから:
省略形が一意であるか、定義済みのオプションと完全に一致する場合は、長いオプション名を省略できます。
私が受け取ったコードの仕様では、フラグの完全な完全一致が必要であり、多くのフラグがあるため、これを行いたいと考えています。
で略語をオフにすることはできgetopt_long()
ますか? マニュアルページから:
省略形が一意であるか、定義済みのオプションと完全に一致する場合は、長いオプション名を省略できます。
私が受け取ったコードの仕様では、フラグの完全な完全一致が必要であり、多くのフラグがあるため、これを行いたいと考えています。
コードエイプ、
略語機能を無効にする方法はないようです。この機能を望んでいるのはあなただけではありません。参照: http://sourceware.org/bugzilla/show_bug.cgi?id=6863
残念ながら、上記のリンク先のバグ レポートは "WONTFIX" で解決されているため、glibc 開発者はこのオプションを望んでいないようです。ここでは運が悪いかもしれません:-\
getopt() の代わりに argp_parse() を使用する場合 (強くお勧めしますが、BTW)、次の方法でユーザーが入力した正確なフラグにアクセスできます。
状態->argv[状態->次 - 2]
ちょっとしたハックですが、うまくいくはずです。
これは完全な解決策ではありませんが、以下のように getopt_long() (通常はスイッチ内) を呼び出した後にユーザーが指定した正確な引数を確認できます。
if (strcmp(argv[optind-1], "--longoption") == 0)
optind は、処理する必要がある次の引数を指します。したがって、optind-1 を使用して元の引数にアクセスできます。