getopt_long引数リストを介して後方に移動することは可能ですか?
-
16-09-2020 - |
質問
:
の行に沿って、特定の引数が存在するかどうかに基づいて、いくつかの引数のリストの1つに委任したいと思います。./test --do-thing-1 --option-A=7 --common-option --option-B=2 # options C and D not valid
./test --do-thing-2 --option-C=9 --common-option --option-D=1 # options A and B not valid
.
と最善の方法でこれをすることを考えることができることは、main()
をすべての共通オプションを処理し、残りを処理するためにいくつかの関数のどちらの機能を決定することです。
一般的なオプションが最初にのみ発生する可能性があるように注文を制限したくないことに注意してください。
私の問題は、2回目の引数を1にリセットする前に1を1にリセットすると、optind
セグメンテーションは、無効な文字列をgetopt_long
に渡すことで、私はoptindでめちゃくちゃにしてはいけません。
Googleを持っていて、strncmp
引数リストの周りをジャンプすることが可能かどうかについての参照が見つかりませんでした(getopt_long
が可能であることがわかります)、それがそうであれば、どうすればいいですか?< / P>
非標準ライブラリを使用しないことを好みます。 (言語はわかりやすいC、C ++をお願いします)
解決
私の問題は、私がstatic struct option long_options[]
アレイの最後の行をゼロに設定していなかったので、これを正しくエラー修正します。
GETOPTには、その内部状態を正しくリセットするために、optind
を0ではなく0にリセットする必要があります。
所属していません StackOverflow