是否可以通过getopt_long参数列表向后移动?

时间:2010-07-16 10:38:23

标签: c getopt-long

我想根据是否存在特定的参数,委托给几个可能的参数列表中的一个:

./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通过将无效字符串传递给strncmp来进行段错误 - 所以我想我不应该'惹人讨好。

我有一个谷歌,并且找不到任何关于是否可以跳转到getopt_long参数列表的参考(我知道getopt可能),如果它是,我该怎么做?

我不想使用任何非标准库。 (语言很简单,请不要使用c ++)

1 个答案:

答案 0 :(得分:1)

我的问题是我没有将static struct option long_options[]数组的最后一行设置为零,设置正确地修复错误。

GNU getopt还需要将optind重置为0而不是1才能正确重置其内部状态。

相关问题