可以拆分/级联getopt_long吗?

时间:2014-04-17 00:06:08

标签: c linux command-line-arguments getopt

我有一个小型C(非C ++)应用程序,使用getopt_long解析命令行参数。我想编写另一个共享多个元素的应用程序(包括一些常见的命令行参数),但也会有一些独特的东西。作为其中的一部分,我想将命令行解析拆分为通用(在静态库中)和特定于应用程序。

是否有可能以不同的方式将getopt_long的调用与不同的选项集级联起来,这样如果"外部"呼叫(特定于应用程序的选项)不会识别它可以尝试调用公共选项解析器的选项,而不会向用户打印任何错误,除非两者都不识别该选项?这必须在逐个选项的基础上完成,因为用户可以按任何顺序传递选项。

我喜欢getopt的静态定义的常量选项查找表的简单性。我知道我可以动态地生成一个合并的表,只需调用一次getopt,但这看起来更痛苦,我不想这样做。

到目前为止,我对文档的阅读看起来并不乐观。

1 个答案:

答案 0 :(得分:0)

然后我会考虑使用GNU libc的argp API。

可以组合Argp解析器,请参阅the example 4。因此,您可以将公共部分放在一个解析器中(在共享库中),将特定于应用程序的解析器放在另一个解析器中。

或者,也可以考虑Glib(来自GTK,但可以独立使用)及其command line option parsing(因为GOptionContext - s可以包含多个GOptionGroup - s {{3 }})...)