vxworks 中的 C++ 11

C++ 11 in vxworks

我是VxWorks的新手,我正在VxWorks平台上使用C++开发一个软件。我想知道VxWorks编译器是否支持C++11标准。我问这个问题的原因是因为没有 shrink_to_fit() std::vector 函数可用(这个函数是在 c++ 11 标准中引入的)。所以我想知道有什么办法可以在VxWorks中用C++ 11标准编译代码。

我假设您使用的是 WindRiver (diab) 编译器,这也是我们用于 VxWorks 平台的编译器。如果是这样的话,我在他们的网站上找到了一份 pdf 文件,其中非常清楚地概述了它们仅符合 C++03。

Link to the pdf

Support for ANSI C89, C99, and C++ 2003

显然,VxWorks 也有 GNU 和 ICC 编译器支持,但我不太熟悉它们如何与 VxWorks 一起工作。

vxWorks 有可用的 g++ 商业版本,支持 c++11。据我所知,这些 g++ 端口可用于 vxWorks 7.0 或更高版本。

仅在VxWorks 7中。VxWorks7附带的diab仍然不支持C++11。

GnatPro 17.1 附带 gcc 6.2.1 并可与 VxWorks 一起使用。

您可能对以下内容感兴趣: http://en.cppreference.com/w/cpp/compiler_support

使用新的 Vxworks 7 SR600,clang 编译器支持 C++11。

最新的 vxworks 版本支持 c++17(C++17、Boost、Python 和 Rust 集合) https://www.windriver.com/news/press/pr.html?ID=22444

我在 real-time 嵌入式系统方面工作了大约 25 年,主要是在航空电子领域,我记得,标准模板库通常是不允许的,因为它们使用不受控制的动态内存分配和不受控制的线程创建。也许这已经改变了,但这可能就是为什么大多数 VXworks 版本都避开 STL 的原因。