【问题标题】:What does the dash mean in windows command line syntax?windows命令行语法中的破折号是什么意思?
【发布时间】:2013-05-21 07:35:44
【问题描述】:

我知道基本的 c++ 编码和命令行语法。通常,main() 函数如下所示:

int main(int argc, char *argc[])

当我通过命令行执行我的程序时,我只是这样做:

cd c:\path\to\foo 1

其中 1 是参数。当然,arc 将等于“2”,而“1”将位于数组 argc 的元素“1”处(而不是 0)。

我在很多地方都看到过破折号。具体来说:

gcc -v

如果我只输入“gcc”,它表示没有参数。如果我输入“gcc v”,我会得到“错误:没有这样的文件或目录”。但是当我查看gcc所在的minGW bin文件夹时,没有文件夹'v'。

【问题讨论】:

  • 也许这有帮助:en.wikipedia.org/wiki/…
  • 好的。所以他们指定选项。我非常感谢必须以 foo -v 而不是 foo v 开头的示例 C++ 代码。
  • 我知道有 Boost 的程序选项库。除此之外,以及答案中提到的 getopt 库,我什么都不知道。归结为接受您的论点并对其进行解析。
  • 哦!我明白稻田当时的意思。所以整个参数是-v,程序只是寻找'-v',它表示数组中的下一个元素是它正在寻找的参数。这只是字符串分析。对吗?

标签: c++ windows command-line command-line-arguments


【解决方案1】:

这只是程序中设置选项的一种风格。它来自 Unix/Linux 等提供的 getopt 库。kc7zax 在他们的回答中提到的 -- 形式是这些选项的长形式(允许长标识符而不是单个字符)。

这些没有什么神奇之处。它们只是从argv 数组中解析出来的。如果需要,您可以自己实现类似或相同的功能。但这是一种痛苦。这就是图书馆存在的原因。

【讨论】:

    【解决方案2】:

    它只是从可能存在的参数值中识别命令行参数名称的标准。例如gcc -o myfile.o

    Windows 世界通常将 - 或 / 作为标记。我也经常在 unix/bsd 世界中遇到 -- 。

    【讨论】:

    • 这将如何在 c++ 代码的 main 方法中实现?我的理解是我们正在为参数值命名。但是这些值是映射的还是根据标记的?
    • 是的,这是从 main 方法完成的。传递给 main 的参数将包含用户键入的内容。然后程序分析输入并决定它是否知道如何处理这些参数。正如@paddy 所提到的,有许多库可以为您执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2015-04-02
    • 2015-02-11
    • 2013-07-06
    • 2016-05-08
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多