特定の引数が存在するかどうかに基づいて、次の行に沿って、いくつかの可能な引数のリストの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()
すべての一般的なオプションを処理し、残りを処理するために呼び出すいくつかの関数のどれを決定することです。
共通のオプションが最初にのみ発生するように、順序を制限したくないことに注意してください。
私の問題はoptind
、引数をもう一度解析する前に1にリセットするとgetopt_long
、無効な文字列をに渡してsegfaultが発生するstrncmp
ことです。したがって、optindをいじってはいけないと思います。
私はグーグルを持っていて、引数リストを飛び回ることが可能かどうかについての参照を見つけることができませんgetopt_long
(私はそれが可能であることを知っていますgetopt
)、もしそうなら、どうすればいいですか?
非標準のライブラリは使用したくない。(言語はプレーンcです。c++は使用しないでください)