Boost - предупреждение о разыменовании указателей при построении - PullRequest
2 голосов
/ 25 ноября 2011

Я следую учебному пособию "Начало работы" с веб-сайта Boost.Я пытаюсь построить отдельно скомпилированные библиотеки, используя следующие команды:

./bootstrap.sh

, а затем

./b2

Во время сборки я получаю много (например, сотни)эти предупреждения:

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

Я хотел бы знать, если это проблема с моей стороны и могу ли я что-то сделать, чтобы избавиться от этих предупреждений?

Спасибо.

(Boost 1.48, Ubuntu 10.04.3 LTS)

1 Ответ

1 голос
/ 25 ноября 2011

Cellperformance утверждает, что строгий псевдоним является:

[...] предположением, сделанным компилятором C (или C ++), что разыменование указателей на объекты различныхтипы никогда не будут ссылаться на одну и ту же ячейку памяти (т.е. псевдоним eachother.)

Это предупреждение возникает, когда включены -fno-strict-aliasing и оптимизации (-O2 или выше), поскольку компилятор должен быть намного большеконсервативный при обращении к (возможно) псевдонимной памяти.Это приводит к меньшему количеству оптимизаций - например, компилятор не может быть уверен, что элементы не перекрываются (см. Пример в статье, размещенной выше).

Это не предупреждение, о котором вам следует беспокоиться - разработчики Boostвероятно, знают об этом и имеют веские причины, почему это нормально.

...