如何在我不想编辑的第 3 方代码中禁用来自 gcc 的未使用变量警告?

新手上路,请多包涵

我想知道您传递给 gcc 编译器以关闭未使用的变量警告的开关?我在 windows 上从 boost 中得到错误,我不想触摸 boost 代码:

 C:\boost_1_52_0/boost/system/error_code.hpp: At global scope:
C:\boost_1_52_0/boost/system/error_code.hpp:214:36: error: 'boost::system::posix_category' defined but not used [-Werror=unused-variable]
C:\boost_1_52_0/boost/system/error_code.hpp:215:36: error: 'boost::system::errno_ecat' defined but not used [-Werror=unused-variable]
C:\boost_1_52_0/boost/system/error_code.hpp:216:36: error: 'boost::system::native_ecat' defined but not used [-Werror=unused-variable]

我尝试同时使用 -Wunused-value-Wno-unused-value 但都没有抑制上面的消息。

什么是正确的命令,这是我的编译行:

 g++  -g -fno-inline -Wall -Werror -Wextra -Wfloat-equal -Wshadow
-Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wno-conversion
-Wdisabled-optimization -Wredundant-decls -Wunused-value -Wno-deprecated
-IC:\\boost_1_52_0 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
-c -o op.o op.cpp

也许 -Wall 会覆盖我的目标?

原文由 WilliamKF 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

-Wno-unused-variable 开关通常可以解决问题。但是,如果您在项目中关心这些事情,这确实是一个非常有用的警告。当 GCC 开始警告你代码中没有的东西时,它会变得很烦人。

我建议您保持警告,但使用 -isystem 而不是 -I 包含第三方项目的目录。该标志告诉 GCC 不要警告您有关您无法控制的内容。

例如,不是 -IC:\\boost_1_52_0 ,而是 —1eb5419f60cd0ec51491602379f5ae9 -isystem C:\\boost_1_52_0

希望能帮助到你。祝你好运!

原文由 user405725 发布,翻译遵循 CC BY-SA 3.0 许可协议

我建议既不要编辑第 3 方代码,也不要全局禁止警告。如果您使用的是 CMake,则可以仅针对外部库禁止特定警告。

 find_package(Boost REQUIRED)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
    target_compile_options(Boost::boost PUBLIC -Wno-unused-variable)
endif()
...
add_executable(main "main.cpp")
target_link_libraries(main Boost::boost)

另请参阅 FindBoost.cmake

原文由 Burak 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题