我知道以下内容:
令人尊敬的 getopt(3)
扩展 getopt_long
glibc argp
用于Unix风格的参数向量的解析器
来自GNOME项目的popt(或其在Glib中的精神继承者)
我确信还有更多我没有使用过甚至没有听过的; 快速谷歌搜索显示Gopt,argtable和Optlist.
就个人而言,我argp
最喜欢,并且我使用getopt
/ 编写的每个程序getopt_long
(超出某个复杂的基线)都已转换为使用argp
.它比所有GNU风格的约定更加广泛可用popt
,比getopt_long
文档更强大,更灵活.在缺点方面,它远非最容易使用(由于非常灵活),并且支持它的代码非常冗长(C中的许多内容也是如此).
你用了什么,为什么?
是的,我的意思是C而不是C++.有大量的C++解析器,但我不使用C++.
约翰米利金指出,popt
不再维持.我列出它是因为许多程序仍在使用它 - 包括AbiWord,rpm,rsync和samba - 尽管Gnome努力迁移.但我现在也添加了一个指向Glib的参数解析器的链接.
对于C++参数解析,请参阅问题C++有哪些参数解析器库?
GNU有gengetopt,它为选项数据结构生成代码,getopt_long
代码用于解析命令行并填充结构.它相当容易学习并且运行良好.
作为奖励,您可以围绕代码传递选项结构,并在需要时避免全局存储.
它提供了GNU样式语义(显然),如果你不确定你的受众的构建环境,它就足够小,可以简单地包含在项目中.