2010-07-16 66 views
0

我想委托的基于特定参数是否存在争论几种可能的名单之一,沿着线:是否可以通过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 - 所以我想我不应该与OPTIND搞乱。

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

我不想使用任何非标准库。 (语言是纯C,没有C + +)

回答

1

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

GNU getopt还要求将optind重置为0而不是1以便正确地重置其内部状态。

相关问题