你如何禁用未使用的变量警告出山第三方代码的gcc我不希望编辑?(How do you disable

2019-07-20 10:41发布

我想知道是什么交换机将传递给gcc编译器来关闭未使用的变量警告? 我得到的错误出在Windows升压的,我不想碰升压代码:

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覆盖我的目标是什么?

Answer 1:

所述-Wno-unused-variable开关通常是卓有成效的。 然而,这确实是一个非常有用的警告,如果你关心这些事情在你的项目。 当GCC开始要提醒你的事情不是在你的代码,虽然它变得恼人。

我建议你保持上的警告,但使用-isystem代替-I对包括第三方项目目录。 这标志告诉GCC不是要提醒你,你无法控制的东西。

例如,而不是-IC:\\boost_1_52_0 ,说-isystem C:\\boost_1_52_0

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



Answer 2:

有时候,你只需要抑制一些警告,要防止其他的警告,只是为了安全起见。 在代码中,你可以使用GCC的未使用的属性压制变量,甚至形式参数的警告。 比方说,你有这样的代码片段:

void func(unsigned number, const int version)
{
  unsigned tmp;
  std::cout << number << std::endl;
}

可能有一种情况,当你需要使用此功能的处理器 - 这(恕我直言)在C相当普遍++ Boost库。 然后,你需要第二个形式参数的版本 ,所以函数的签名是一样的处理程序需要的模板,否则编译会失败。 但你并不真的需要它的功能本身要么...

如何标记变量或形式参数从警告排除的溶液是这样的:

void func(unsigned number, const int version __attribute__((unused)))
{
  unsigned tmp __attribute__((unused));
  std::cout << number << std::endl;
}

GCC有许多其他的参数,你可以在手册页检查。 这也适用于在C程序中,不仅是C ++,我认为它可以在几乎所有的功能,而不仅仅是处理器使用。 继续尝试! ;)

PS:最近我用这个来抑制这样的模板提升系列化的警告:

template <typename Archive>
void serialize(Archive &ar, const unsigned int version __attribute__((unused)))

编辑:显然,我没有回答你的问题,你需要, drak0sha做得更好。 这是因为我主要是跟着这个问题,我的坏称号。 我们希望,这可能帮助其他人,谁得到,因为标题这里... :)



Answer 3:

如果您使用gcc和要禁用所选代码的警告,可以使用#pragma编译器指令:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
( your problematic library includes )
#pragma GCC diagnostic pop

对于代码,你控制,你也可以使用__attribute__((unused))指示特定变量不使用的编译器。



Answer 4:

man gcc下警告选项。 有你有一大堆unused

警告选项
... -Wunused -Wunused功能-Wunused标签-Wunused参数-Wunused价值-Wunused变量-Wunused-但设置参数-Wunused,但设置变量

如果您有任何前缀他们no- ,将禁用此警告。

许多选项都开始使用-f或-W长名称---比如,-fmove循环不变量,-Wformat等。 大多数的这些有正反两方面的形式; -ffoo的负的形式为-fno-foo。 本手册记录只有这两种形式中的一种,哪一个不是默认。

更详细的解释,可以发现选项来请求或禁止警告



Answer 5:

使用-Wno-unused-variable应该工作。



Answer 6:

编译器已经告诉你,这不是value而是variable 。 您正在寻找-Wno-unused-variable 。 另外,尽量g++ --help=warnings ,以查看可用选项的列表。



Answer 7:

你如何禁用未使用的变量警告出来的gcc?
我得到的错误出在Windows升压的,我不想碰升压代码...

您访问Boost的Trac系统和文件对加速的bug报告。

您的应用程序不负责清库警告和错误。 该库负责清理自己的警告和错误。



Answer 8:

export IGNORE_WARNINGS=1

它会显示警告信息,但与构建继续



文章来源: How do you disable the unused variable warnings coming out of gcc in 3rd party code I do not wish to edit?