将 Boost 与 IAR 的 C++ 编译器结合使用
Using Boost with IAR's C++ compiler
我将首次为嵌入式项目提供Boost测试驱动。我使用IAR 7.60.2设置为c++,标准,异常,RTTI和销毁静态对象。
我已经复制并粘贴了这个Boost入门示例,使用Boost 1.62.0。
您可能已经猜到这个问题的存在,它无法构建(第一个错误是Error[Pe439]: expected a ">" ...boost_1_62_0boosttype_traitsremove_reference.hpp 30
)。
该行恰好包含一个右值引用,这在c++ 03中是不支持的。Boost使用现代c++结构(如T&&
和constexpr
)导致了数百个错误。
不出所料,IAR并不是Boost声称要测试的编译器之一,但Boost可以与c++ 11之前的编译器一起工作,再加上Boost/predef中存在一个特定于IAR的头文件,这一事实使我相信可能有一种方法可以构建它。
我已经搜索了SO,互联网和Boost的一些来源,但我找不到关于如何使用Boost与IAR的任何相关信息,所以我来问:
1。我应该做些什么来帮助Boost识别我正在使用的IAR编译器及其限制?
2。有机制吗强制Boost构建一个c++ 03编译器?
@MSalter的评论摘要,上面:
Boost是由不同的人(主要是志愿者)建立和维护的不同年龄的图书馆的集合。Boost有一些通用的基础结构来控制某些设置。如果Boost公共基础设施不支持某人正在寻找的设置(并且"为c++ 03编译"不支持),那么给定的库是否支持c++ 03下的编译将取决于它是何时制作的和/或它是否专门设计用于此目的。Boost没有全局语言标准设置。
解决方案就是简单地尝试有问题的特性,看看它们是否在使用的环境中工作。
感谢@MSalter的澄清。
- C/C++编译器通常会删除重复的库吗
- 多态性和功能结合
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- Win32编译器选项和内存分配
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++,我收到一个无法理解的编译器错误
- 在线编译器中的分段C++没有打印消息
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 我需要知道编译器如何在cpp中使用析构函数
- 编译器如何区分std::vector的构造函数
- CLANG 编译器 说:变量"PTR"可能未初始化
- 编译器在多大程度上改变了动态结合到静态
- 为什么C++编译器允许 extern 关键字与定义相结合
- 结合 OpenMP、英特尔 MKL 和 MSVC 编译器时出现大量内存泄漏
- 有没有一种方法可以将编译器防火墙(Pimpl)和默认可复制性的优点结合起来
- 将 Boost 与 IAR 的 C++ 编译器结合使用