跳转到内容

C 编程/GNU C 库参考/argp.h

来自 Wikibooks,开放世界中的开放书籍

下一节:子选项的解析,上一节:使用getopt解析程序选项,上一级:解析程序参数   [目录][索引]


使用 Argp 解析程序选项

[编辑 | 编辑源代码]

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 用户自定义
  • 子选项解析示例

25.3.1 argp_parse 函数

[编辑 | 编辑源代码]

argp_parse 函数是 argp 的主要接口。在许多情况下,调用argp_parsemain函数中唯一需要的参数解析代码。参见程序参数。

函数: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 argpflags是一组修改解析行为的标志位。参见argp_parse的标志。input传递给 argp 解析器argp,其含义由argp定义。典型用法是传递指向结构的指针,该结构用于指定解析器的参数并传递回结果。除非flags中包含ARGP_NO_EXITARGP_NO_HELP标志,否则调用argp_parse可能会导致程序退出。如果检测到错误或遇到未知选项,则此行为为真。参见程序终止。如果arg_index非空,则第一个未解析选项在argv中的索引将作为值返回。如果解析成功,则返回值为零;如果检测到错误,则返回值为错误代码(参见错误代码)。不同的 argp 解析器可能会返回任意错误代码,但标准错误代码为:如果发生内存分配错误,则为ENOMEM;如果遇到未知选项或选项参数,则为EINVAL

下一节:子选项的解析,上一节:使用getopt解析程序选项,上一级:解析程序参数   [目录][索引]

华夏公益教科书