2017-09-24 8 views
0

私はtinyxml2ライブラリを使用するプロジェクトを持っています。私は-Werror=zero-as-null-pointer-constantが挙げられている非常に長いコンパイラオプションのリストを持っています。ですから、どこにでも私はtinyxml2.hを含んでいます。私はエラーがあります:0 used as null pointerですが、私のコードにはこのような問題はありません。私はそれらを制御することができないので、インクルードのいくつかのコンパイラオプションを無効にする方法はありますか?インクルードの警告を抑止するには?

P.S. gcc/clangオプションでは不可能な場合は、おそらくcmake経由で行うことができますか?あるいは、もし存在すれば両方の方法を知りたいです。

+2

両方GCC Clangには* pragmas *があり(一時的に)警告を無効にすることができます。 [GCCのオンラインドキュメント](https://gcc.gnu.org/onlinedocs/)は、探し始めるのに適しているかもしれません。 –

+3

...そして、*あなたの*コードをプラグマで捨てたくない場合は、単純に 'tinyxml2.h'をインクルードし、ソースに* that *を含むヘッダを作成してください。次に、必要に応じて、より多くのコンパイラのサポートをすべて1か所に追加できます。 – StoryTeller

答えて

1

tinyxml2のインクルードディレクトリをシステムインクルードディレクトリとしてマークすると、そこから来る警告が抑制されます。

GCC/Clangでは、-Iの代わりに-isystem、またはCMakeにインクルードディレクトリを追加するとSYSTEMというキーワードでこれを行うことができます。あなたが抑制プラグマを使用することができ

例えば

include_directories(SYSTEM ${SOME_INCLUDE_DIR}) 

または、より良い、

target_include_directories(myExe SYSTEM ${SOME_INCLUDE_DIR}) 
+0

明確にするために、警告は抑制され、システムのインクルードディレクトリとしてマークすることの効果の1つですが、唯一のものではありません。 – hvd

0

この

はGCCとVC++コンパイラでサポートされていて、それは次のようになります。ここでは
#pragma warning(push) 
#pragma warning(disable : 4244) 
#pragma warning(disable : 4127) 
#pragma warning(disable : 4512) 
#include <boost/python.hpp> 
#pragma warning(pop) 

は、詳細なスペックです:

関連する問題