2

Boost Web サイトの「はじめに」チュートリアルに従っています。次のコマンドを使用して、個別にコンパイルされたライブラリを構築しようとしています。

./bootstrap.sh

その後

./b2

構築中に、私はこれらの警告をたくさん (数百のように) 受け取っています:

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

それが私の側に問題があるかどうか、これらの警告を取り除くために何かできるかどうかを知りたいですか?

ありがとう。

(Boost 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 に答える