选项后跟getopt中的一个选项[其中前一个选项期望值]

时间:2012-09-27 09:03:29

标签: c getopt

我怀疑我们是否有两个选项-a和-c和选项-a需要有一个值而没有-c

的值

现在,如果我给 - > testopt -a -c [testopt是程序]

然后我的程序将-c作为-a的值。有没有办法可以确保有价值的期权没有其他选项作为其价值?

问题是系统接受 - 一个关键字的值作为我需要防止的另一个关键字。 例如 - testopt -a -c。在这种情况下,-a的强制参数(值)和-c的值没有...但是我的getopt将其解释为“-c”是“-a”的值我怎么能在这个上抛出一个错误getopt的。

1 个答案:

答案 0 :(得分:1)

您获得-c作为-a选项的值,因为您指定了-a来获得值。如果您使用相反的选项调用您的程序

$ testopt -c -a

然后getopt将返回'?',表示缺少选项值(根据getopt manual page),并且控制台上会打印错误。

不幸的是,没有办法告诉getopt一个参数有一个可选值,那么你必须实现自己的选项解析器。