我使用argp.h
库来解析程序的命令行参数。
我设置了一点,它的工作,但只是有一件事我不喜欢。
当我用--help
运行我的程序时,它显示如下:
-?, --help Give this help list
--usage Give a short usage message
-V, --version Print program version
这是正确的,但是为什么--help
的缩写是-?
?是否可以指定一个不同的键,比如-h
和一个宏?
我看了一下docs,但我没有找到任何有关这方面的信息,除了可能定义一个自定义键,但我不喜欢这种方法或更好,我不知道这是否是首选的方式。
1条答案
按热度按时间yjghlzjz1#
通过深入研究,我们发现了
'?'
被定义为默认帮助功能的短选项的位置。在源中没有太大的损失,当启用默认帮助时,用户的 * argp * 和默认 * argp *(以及版本 * argp *(如果适用))被分组为同级(另请参见:children),然后解析程序参数。在此之前似乎没有用于更改默认值的接口,因为short选项是硬编码的。
通过将
ARGP_NO_HELP
flag传递给argp_parse
,可以关闭默认的帮助/用法选项。argp_state_help
可用于使用各种flags复制默认选项的行为。默认选项使用的标志包括:--help
:ARGP_HELP_STD_HELP
--usage
:ARGP_HELP_USAGE | ARGP_HELP_EXIT_OK
其中
ARGP_HELP_EXIT_OK
的结果为exit(0)
。如果不使用
argp_program_version_hook
,则--version
的行为只是打印argp_program_version
。举个粗略的例子: