如何抑制包含的警告? [重复]

问题描述 投票:0回答:2

我有一个使用

tinyxml2
库的项目。我有一个很长的编译器选项列表,其中列出了
-Werror=zero-as-null-pointer-constant
等。因此,在我包含
tinyxml2.h
的所有地方,我都会遇到错误:
0 used as null pointer
,但是我的代码没有这样的问题。有没有办法禁用包含的某些编译器选项,因为我无法控制它们?

附注如果无法通过

gcc/clang
选项来完成,也许可以通过 cmake 来完成?或者我想知道这两种方式是否存在。

c++ cmake include warnings
2个回答
2
投票

您可以使用抑制编译指示。

GCC 和 VC++ 编译器支持此功能,如下所示:

#pragma warning(push)
#pragma warning(disable : 4244)
#pragma warning(disable : 4127)
#pragma warning(disable : 4512)
#include <boost/python.hpp>
#pragma warning(pop)

以下是详细规格:


1
投票

您可以将

tinyxml2
的包含目录标记为系统包含目录,这将抑制来自该目录的警告。

使用 GCC/Clang,您可以使用

-isystem
而不是
-I
来完成此操作,或者在 CMake 中添加包含目录时使用关键字
SYSTEM
来完成此操作。

比如说

include_directories(SYSTEM ${SOME_INCLUDE_DIR})

或者更好,

target_include_directories(myExe SYSTEM ${SOME_INCLUDE_DIR}) 
© www.soinside.com 2019 - 2024. All rights reserved.