【问题标题】:how to get rid of -std=c++17 in g++ command line?如何在 g++ 命令行中去掉 -std=c++17?
【发布时间】:2019-11-20 09:43:21
【问题描述】:

我遇到了一个错误,说 std::size() 不是 std 的成员。然后我找到了这个链接:Why std::size() is not a member of std in gcc 8.2.0 最终,在我使用g++ -std=c++17 myFile.cpp 编译文件后,我的代码运行良好。现在,我按照上一个链接的建议尝试了g++ -std=c++17 6.cpp -o - 6.out,但它不起作用。有cmets吗?

【问题讨论】:

  • 你的问题让我很困惑。看来你已经了解到std::size 是 C++17 的一个特性,而 g++ 默认没有启用这个功能,对吧?那么你的标题似乎暗示你不想每次都明确启用它,但你的问题似乎是关于如何指定输出文件名的误解?请尝试澄清您的要求。这将有助于准确解释您的期望,以及会发生什么,包括任何错误消息。
  • g++ -std=c++17 6.cpp -o - 6.out 看起来在-o 和文件名之间多了一个-(破折号)。
  • 您不应该只是将来自 Internet(甚至是 Stack Overflow)的命令复制并粘贴到您的计算机上不了解它们在做什么。你有一个工作命令g++ -std=c++17 myFile.cpp。现在阅读 -o 正在做什么以及应该遵循的内容,然后才将其添加到您的构建命令中。
  • 不,没有什么可以摆脱你的构建命令中的-std=c++17。唯一的可能是升级编译器版本,但这样的版本尚不存在。最新的gcc 版本默认使用 C++14。如果你想使用 C++17 的特性,你必须告诉你的编译器。
  • 编译器正常运行所需的标志数量与您无关,因为大多数时候您不应该手动调用它。考虑使用 makefile(或其他构建系统)。

标签: c++


【解决方案1】:

使用以下命令编译:

g++ -std=c++17 yourFile.cpp -o output_executable_name

yourFile.cpp 替换为您的.cpp 文件的名称,并将output_executable_name 替换为您想要的名称,它将生成一个具有此名称的可执行文件。

查找here 更多关于 g++ 编译器的信息。

【讨论】:

    【解决方案2】:

    这可以通过 shell 别名来完成。

    如果您真的不想输入-std=c++17,您可以在.bashrc.zshrc 文件(或与您使用的shell 对应的任何rc 文件)中设置别名。

    我主要使用 zsh,但几乎所有 shell 都使用相同的过程...

    找出与echo $SHELL 一起使用的shell,这可能是/bin/zsh/bin/bash。然后根据您的外壳继续以下操作

    vim ~/.zshrcvim ~/.bashrc(取决于你的 shell)

    添加alias g++="g++ -std=c++17"然后保存文件

    重新启动当前的 shell/终端窗口(关闭并重新打开)

    下次你去编译:

    g++ ... shell 会将其替换为g++ -std=c++17,并为自己节省了 10 次击键。

    注意:如果您要为不同的项目使用各种编译器版本,则不建议这样做,但如果您问这个问题,它可能永远不会有关系。 glhf!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 2021-05-07
      • 2020-06-05
      • 2023-02-09
      • 2018-03-22
      • 2012-01-09
      • 1970-01-01
      相关资源
      最近更新 更多