将 Boost 与 IAR 的 C++ 编译器结合使用

Using Boost with IAR's C++ compiler

本文关键字:编译器 结合 C++ Boost IAR      更新时间:2023-10-16

我将首次为嵌入式项目提供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的澄清。