2

我正在关注 Boost 网站上的“入门”教程。我正在尝试使用以下命令构建单独编译的库:

./bootstrap.sh

进而

./b2

在构建过程中,我收到了很多(比如数百个)警告:

./boost/...whatever.hpp:linenumber: warning: dereferencing pointer ‘...’ does break strict-aliasing rules

我想知道这是否是我这边的问题,我是否可以做些什么来摆脱这些警告?

谢谢。

(升压 1.48,Ubuntu 10.04.3 LTS)

4

1 回答 1

1

Cellperformance声明严格混叠是:

[...] C(或 C++)编译器做出的一个假设,即取消引用指向不同类型对象的指针将永远不会引用相同的内存位置(即互为别名。)

-fno-strict-aliasing当启用优化(或更高)时会出现此警告,-O2因为编译器在访问(可能)别名内存时需要更加保守。这会导致更少的优化——例如编译器不能确定元素不重叠(参见上面发布的文章中的示例)。

这不是您应该担心的警告 - Boost 开发人员可能已经意识到这一点,并且有充分的理由说明为什么可以这样做。

于 2011-11-25T06:58:21.117 回答