getopt_long引数リストを介して後方に移動することは可能ですか?

StackOverflow https://stackoverflow.com/questions/3263971

  •  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にリセットする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top