我正在实现一个命令行工具,我需要能够处理一堆选项。一些选项必须在程序完成后终止程序。例如,我有选项a,b和c。如果a和b在完成后终止,我给出命令
./myprogram -bca [file]
有没有办法在这样的情况下使用getopt()?
给出“a”优先级编辑:
我通过在选项上运行开关来解决这个问题,如果选择了一个选项则设置一个标志。然后将所有标志发送到一个按顺序查看标志的函数。
答案 0 :(得分:1)
没有办法让getopt
本身处理这个问题。最简单的方法是创建一个标志位图,如@tfahl建议的那样。
答案 1 :(得分:1)
有两种主要方法可以处理getopt()
读取的选项。一个是执行与选项相关联的操作,因为getopt()
在读取其余选项之前识别它;另一种是在进行任何处理之前阅读所有选项。 (程序不经常实现混合解决方案;一些选项在解析参数时起作用,但其他选项只是被注意到,并且在处理参数之后采取的操作。)
在您的情况下,您似乎需要在进行任何处理之前解析所有选项。如果-a
和-b
在执行操作后终止程序,那么它们是互斥的选项,您应该将其诊断为错误地调用程序。您需要决定是否允许-c
以及-a
或-b
。
通常,您将拥有一起工作所需的选项对,或者您需要知道在决定执行操作之前是否已指定其中一个,另一个或两者。另一个需要考虑的问题是,如果在命令行上重复选项,这意味着什么。