3

私のプロジェクトでRTTIを無効にしたいと思います。ただし、このプロジェクトは、-fno-rttiをサポートしないBoostAnyに依存するBoostProgramOptionsを使用します。

RTTIなしでブーストプログラムを使用するための解決策があるかどうか疑問に思いましたか?マクロを定義するか、一部の機能を使用しないことによって?

ありがとう

4

2 に答える 2

4

答えはいいえだ"。Boost.POはBoost.Anyに基づいており、現在、この依存関係はユーザーが回避することはできません。Boost.AnyはBoost.POのメインストレージ構造を提供するため、AnyなしではPOの有用な部分をコンパイルすることはできません。

于 2013-01-28T09:14:37.880 に答える
1

答えは「たぶん」です。一部のブースト ライブラリは、例外を無効にして動作しますが、動作しないライブラリもあります。RTTIも同様。

関心のある特定のブースト ライブラリのドキュメントを確認することをお勧めします。

たとえば、Boost.Array は例外を無効にして動作しますが、Boost.Format は動作しません。

can't use typeid with -fno-rtti のようなメッセージが表示される場合は、RTTI を必要とする Boost の一部をコンパイルしている可能性があります。エラーが発生した場所から、どのライブラリかがわかります (通常)。

BOOST_NO_RTTI と BOOST_NO_TYPEID を試すことができます...

http://www.boost.org/doc/libs/1_46_1/libs/exception/doc/configuration_macros.html

于 2013-01-28T08:15:07.103 に答える