【问题标题】:macOS: C++11 Compilation Error with Apple clang Version 13 In Terminal but not In XcodemacOS:C++11 编译错误与 Apple clang 版本 13 在终端但不是在 Xcode
【发布时间】:2022-01-07 20:32:00
【问题描述】:

我正在尝试在 C++ 中的委托构造函数上运行 an example from Microsoft Docs。对于像这样的少量代码,我喜欢使用 VS Code,但是当我在终端中使用常用的make 命令时,我得到了错误,

error: delegating constructors are permitted only in C++11

当我在 Xcode 中运行相同的代码时,我没有收到此错误。

为什么我不能在终端中运行它?我的 Xcode 东西(包括命令行工具)是最新的,所以我还缺少其他东西吗?

编辑

如果我在终端输入g++ --version

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: x86_64-apple-darwin21.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

【问题讨论】:

  • 在提出这样的问题时,您绝对需要包含诸如如何编译代码之类的信息。我们不知道“通常的 make 命令”是什么——或者更具体地说,在这种情况下,您传递给编译器的标志是什么。在这种情况下这是可以猜测的,但通常在提出问题时尽可能多地包含相关信息(显然不是几页上下文,但在出现意外编译错误时,有问题的代码和有关编译方式的确切细节至关重要)。
  • 抱歉,@Cubic 在编译方面我还是个菜鸟。我以前不必编写自己的makefile。通常我在编译短程序时只使用make而不使用makefile as recommended here
  • 你不需要为不知道什么而道歉,但是例如,如果你在编译一个文件时输入 make something 而不使用 Makefile,你只需准确地说这就是你正在做的事情。在这种情况下,您可能没有意识到,但make 是一个完整的构建系统,并且基本上可以根据其配置方式完成任何事情,因此仅说您使用make 并不是很有帮助靠自己。
  • 会做的,谢谢,非常感谢您的帮助和反馈

标签: c++ macos


【解决方案1】:

您需要将 --std=c++11 添加到 Makefile 中的 g++ 命令行选项。 Visual Studio 默认使用最新的 C++ 标准。 gcc 默认是最早的。

【讨论】:

  • 感谢蒂姆,成功了!
  • 该操作使用的是 Apple clang 而不是 gcc,gcc 使用的默认 c++ 标准因 gcc 的版本而异,但它是一个相当新的标准,但不一定是最新的。 Visual Studio 默认为其支持的标准的最新稳定版本,而不是最新版本(可以使用/std:c++latest 启用)。 Apple clang 仍然默认使用 c++98,原因只有 Apple 知道
猜你喜欢
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多