如何在 C++ Builder 中设置 C++ 语言标准

How to set C++ language standard in C++ Builder

今天我们处理了一段需要 C++14 或 C++17 的代码。我的同事用C++Builder来编辑代码,也想尝试用它来编译代码。

我们找不到设置 C++ 语言标准的设置。我们通过谷歌搜索发现,C++builder 有一个仅支持部分 C++11 的“经典编译器”和一个最多支持 C++17 的“基于 clang 的编译器”。我们在项目设置中找到了 enabling/disabling “经典编译器”的复选框,但没有用于显式选择语言标准(在 C++14 和 C++17 之间切换)的项目设置。有类似的东西吗?在哪里?

我们的版本是C++Builder 10.2。

我们还尝试为基于 clang 的编译器显式设置附加编译器选项 -std=c++14,但该选项被拒绝(“未知值 c++14”)。

Hans Passant 对我的问题发表了评论 links 到 New in RAD Studio 10.3: C++17, asynchronous C++ code completion, and more,谢谢。

从这个link我了解到:

  1. C++ Builder 10.2 不包含对 C++14 或 C++17 的任何支持。
  2. C++ Builder 10.3 仅在编译 32 位 windows 二进制文件时支持 C++17。对 C++14 的支持仅在 C++17 是 C++14 的“除了一些小例外,超集”的意义上可用。这意味着,您无法 select 用于编译的所需语言标准。
  3. C++ Builder 10.4 似乎也支持 64 位的 C++17 windows。目前尚不清楚是否以及如何select编辑要使用的语言标准。

ISO C++、10.4 Sydney C++Builder和Clang版本信息如下:

http://docwiki.embarcadero.com/RADStudio/Sydney/en/Clang-enhanced_C%2B%2B_Compilers

Compiler    Platform        Clang Version   LLVM Version
BCC32C      32-bit Windows  5.0             5.0
BCC32X      32-bit Windows  5.0             5.0
BCC64       64-bit Windows  5.0             5.0
BCCIOSARM   32-bit iOS      3.3             3.3
BCCIOSARM64 64-bit iOS      3.3             3.5
BCCAARM     Android         3.3             3.3

https://clang.llvm.org/cxx_status.html

Clang 3.3 及更高版本实现了所有 ISO C++ 2011 标准。

Clang 3.4 及更高版本实现了所有 ISO C++ 2014 标准。

Clang 5 及更高版本实现了 ISO C++ 2017 标准的所有功能。

C++Builder 产品经理 David Millington 还在 C++ 参考站点上更新了 Embarcadero C++Builder 信息,网址为 https://en.cppreference.com/w/cpp/compiler_support

您可以查看不同的 ISO C++ 语言版本,了解许多编译器在其编译器版本中支持的内容。