【问题标题】:Is there a solid way in C to parse optional command line arguments where optional flags are words rather than characters? [duplicate]C 中是否有一种可靠的方法来解析可选的命令行参数,其中可选标志是单词而不是字符? [复制]
【发布时间】:2022-01-19 10:28:27
【问题描述】:

我需要解析如下 C 语言中给出的命令选项:

./myBinary --option1 名称 --option2 年龄 --option3 地址

Getopt 仅支持 -l , -a 种标志。有什么建议吗?

【问题讨论】:

  • C 语言没有命令行解析的概念,只有附加的 有。标准 BSD 和 POSIX 版本只接受单字符选项,但 GNU 还定义了getopt_long,它能够处理多字符选项。

标签: c parsing command-line


【解决方案1】:

唯一可靠的方法是在不依赖外部库的情况下解析这些参数。处理命令行参数没有被广泛接受的标准。

最好的方法是对main 的标准化调用,提供对命令行参数的访问:

int main(int argc, char *argv[]) {
}

操作系统之间存在重大差异,但比这更糟。

  • Windows 倾向于使用/option-option,但许多工具借鉴了其他平台。
  • Linux 倾向于采用 GNU 方式,通过 getopt_long 提供 --option-o
  • BSD 和 Unix 倾向于只使用短 -o,但某些应用程序可能是从 Linux 移植的。
  • 许多 macOS 工具使用 -option,但借鉴了 BSD,有时也借鉴了 Linux。

所以只有 GNU 提供了一个“标准”库来解析这些选项。将其视为非便携式扩展。

长话短说:您需要提供有关目标平台的更多详细信息才能获得更好的答案,但不要指望有完美的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 2022-07-06
    • 2015-03-25
    • 2014-06-03
    • 1970-01-01
    • 2012-11-16
    • 2019-10-10
    • 1970-01-01
    相关资源
    最近更新 更多