作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个小型 C(不是 C++)应用程序,它使用 getopt_long
解析命令行参数。我想编写另一个应用程序,它共享许多元素(包括一些常见的命令行参数),但也有一些独特的东西。作为其中的一部分,我想将命令行解析分为常见的(在静态库中)和特定于应用程序的。
是否可以以某种方式级联调用具有不同选项集的 getopt_long
,这样,如果“外部”调用(特定于应用程序的选项)无法识别某个选项,它可以尝试调用通用选项选项解析器,不会向用户打印任何错误,除非两者都无法识别该选项?这必须在逐个选项的基础上完成,因为用户能够以任何顺序传递选项。
我喜欢 getopt 静态定义的常量选项查找表的简单性。我知道我可能可以动态生成一个合并表,然后只调用 getopt 一次,但这似乎更痛苦,我不想这样做。
到目前为止,我对文档的阅读看起来并不乐观。
最佳答案
然后我会考虑使用 argp来自 GNU libc 的 API。
Argp 解析器可以组合,参见the example 4 。因此,您可以将公共(public)部分放在一个解析器中(在您的共享库中),并将特定于应用程序的解析器放在另一个解析器中。
或者,也可以考虑Glib (来自 GTK,但可以独立使用)及其 command line option parsing (因为 GOptionContext
-s 可以包含多个带有 g_option_context_add_group ... 的 GOptionGroup
-s)
关于c - 可以拆分/级联 getopt_long 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23122367/
我是一名优秀的程序员,十分优秀!