C 编程/GNU C 库参考/argp.h
外观
下一节:子选项的解析,上一节:使用getopt
解析程序选项,上一级:解析程序参数 [目录][索引]
Argp 是一个用于解析 Unix 风格参数向量的接口。参见程序参数。
Argp 提供了在更常用的getopt
接口中无法使用的功能。这些功能包括根据“--help”和“--version”选项自动生成输出,如 GNU 编码标准中所述。使用 argp 可以降低程序员忽略实现这些额外选项或使其保持更新的可能性。
Argp 还提供了将多个独立定义的选项解析器合并为一个的功能,协调它们之间的冲突,并使结果看起来无缝。库可以导出 argp 选项解析器,用户程序可以将其与自己的选项解析器结合使用,从而减少用户程序的工作量。某些程序可能仅使用库导出的参数解析器,从而为库实现的抽象实现一致且高效的选项解析。
要使用 argp,应包含头文件<argp.h>。
argp_parse
函数- Argp 全局变量
- 指定 Argp 解析器
- 在 Argp 解析器中指定选项
- Argp 解析器函数
- 组合多个 Argp 解析器
argp_parse
的标志- 自定义 Argp 帮助输出
argp_help
函数argp_help
函数的标志- Argp 示例
- Argp 用户自定义
- 子选项解析示例
argp_parse
函数是 argp 的主要接口。在许多情况下,调用argp_parse
是main
函数中唯一需要的参数解析代码。参见程序参数。
- 函数:error_t argp_parse (const struct argp *argp, int argc, char **argv, unsigned flags, int *arg_index, void *input)
- 初步:| MT-不安全竞态:argpbuf 本地环境 | AS-不安全堆 i18n 锁损坏 | AC-不安全内存锁损坏 | 请参阅 POSIX 安全概念。
argp_parse
函数使用 argp 解析器argp解析argv中的参数,长度为argc。参见指定 Argp 解析器。为argp传递空指针等同于使用包含全零的struct argp
。flags是一组修改解析行为的标志位。参见argp_parse
的标志。input传递给 argp 解析器argp,其含义由argp定义。典型用法是传递指向结构的指针,该结构用于指定解析器的参数并传递回结果。除非flags中包含ARGP_NO_EXIT
或ARGP_NO_HELP
标志,否则调用argp_parse
可能会导致程序退出。如果检测到错误或遇到未知选项,则此行为为真。参见程序终止。如果arg_index非空,则第一个未解析选项在argv中的索引将作为值返回。如果解析成功,则返回值为零;如果检测到错误,则返回值为错误代码(参见错误代码)。不同的 argp 解析器可能会返回任意错误代码,但标准错误代码为:如果发生内存分配错误,则为ENOMEM
;如果遇到未知选项或选项参数,则为EINVAL
。
下一节:子选项的解析,上一节:使用getopt
解析程序选项,上一级:解析程序参数 [目录][索引]