gpt4 book ai didi

c++ - 命令行开关乱序

转载 作者:行者123 更新时间:2023-11-30 00:59:39 24 4
gpt4 key购买 nike

我正在开发一个 C++ 程序,该程序接受文件名作为命令行输入,从该文件中读取一堆数据,计算有关数据的两件事,然后退出。其中一个计算必须 完成,但另一个是可选的,因此我认为添加一个-c 标志以将其关闭会很好。天真地,我总是假设如果用户给出两个参数,第一个必须切换计算,第二个给出文件名,但是如果有更多的标志,这会变得更加麻烦。制作 rm -rf "file"rm -fr "file"rm "file"-rf 的标准做法是什么作为有效命令工作?

最佳答案

What is the standard practice for making rm -rf "file", rm -fr "file", and rm "file" -rf all work as valid commands?

很多人对此持不同意见,因此似乎没有标准做法,除非您针对特定的受众(即在编写特定于 linux 的命令行工具时,请查看“标准”实用程序的作用) .

无论如何,大多数图书馆最终都会为您提供以下选项:

  1. Switches:这些独立的标志,因为在 switch 之后不需要参数。 tarrm 等 Unix 工具通常允许您一起指定多个标志,就像在示例的 -rf 标志中一样。
  2. 选项:这些选项像开关一样指定,但期望在开关后有一些值。例如,gcc 期望输出文件名在 -o 之后。因为他们期望选项,所以他们显然不能同时指定。
  3. 短名称 VS 长名称:开关和选项通常有两个名称,单短划线、单字母或双短划线描述性名称(比较 -o- -output-file) 尽管一些选项,如帮助或详细控制,通常只有一个长名称。
  4. 多个尾随参数:如果该工具允许同时处理多个文件,则这些都仅在序列的结尾 指定。允许这些与其他选项和标志交错会导致一场噩梦。指示“选项结束”的 -- 选项也很方便,以防其中一些尾随参数可能包含破折号。

许多工具允许开关和选项交错,但多个尾随参数总是在最后。

当然,您会发现不遵守这些约定的常用工具,例如 Microsoft 的 cl.exelink.exe。不过,最近的工具似乎都趋向于这些,包括 Microsoft 的 candle.exe 和用于 WIX 的 light.exe

如果您想确保遵守这些准则(并节省大量时间),请使用“标准”库,例如 UNIX 的 getopt() 或 boost 的程序选项。

编辑:现有的库通常会使用您在指定期望的开关和选项时提供的简短描述为您生成--help 选项。

关于c++ - 命令行开关乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com