我想知道是什么交换机将传递给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
覆盖我的目标是什么?
所述-Wno-unused-variable
开关通常是卓有成效的。 然而,这确实是一个非常有用的警告,如果你关心这些事情在你的项目。 当GCC开始要提醒你的事情不是在你的代码,虽然它变得恼人。
我建议你保持上的警告,但使用-isystem
代替-I
对包括第三方项目目录。 这标志告诉GCC不是要提醒你,你无法控制的东西。
例如,而不是-IC:\\boost_1_52_0
,说-isystem C:\\boost_1_52_0
。
希望能帮助到你。 祝好运!
有时候,你只需要抑制一些警告,要防止其他的警告,只是为了安全起见。 在代码中,你可以使用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做得更好。 这是因为我主要是跟着这个问题,我的坏称号。 我们希望,这可能帮助其他人,谁得到,因为标题这里... :)
如果您使用gcc和要禁用所选代码的警告,可以使用#pragma编译器指令:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
( your problematic library includes )
#pragma GCC diagnostic pop
对于代码,你控制,你也可以使用__attribute__((unused))
指示特定变量不使用的编译器。
见man gcc
下警告选项。 有你有一大堆unused
警告选项
... -Wunused -Wunused功能-Wunused标签-Wunused参数-Wunused价值-Wunused变量-Wunused-但设置参数-Wunused,但设置变量
如果您有任何前缀他们no-
,将禁用此警告。
许多选项都开始使用-f或-W长名称---比如,-fmove循环不变量,-Wformat等。 大多数的这些有正反两方面的形式; -ffoo的负的形式为-fno-foo。 本手册记录只有这两种形式中的一种,哪一个不是默认。
更详细的解释,可以发现选项来请求或禁止警告
使用-Wno-unused-variable
应该工作。
编译器已经告诉你,这不是value
而是variable
。 您正在寻找-Wno-unused-variable
。 另外,尽量g++ --help=warnings
,以查看可用选项的列表。
你如何禁用未使用的变量警告出来的gcc?
我得到的错误出在Windows升压的,我不想碰升压代码...
您访问Boost的Trac系统和文件对加速的bug报告。
您的应用程序不负责清库警告和错误。 该库负责清理自己的警告和错误。
文章来源: How do you disable the unused variable warnings coming out of gcc in 3rd party code I do not wish to edit?