你如何禁用未使用的variables警告从gcc出来?

我想知道你传递给gcc编译器的什么开关来closures未使用的variables警告? 我得到错误的窗口提升,我不想触摸升压代码:

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开关通常-Wno-unused-variable 。 但是,如果您在项目中关心这些事情,那么这确实是一个非常有用的警告。 当GCC开始提醒你关于不在你的代码中的东西时,这变得很烦人。

我build议你保持警告,但使用-isystem而不是-I包含第三方项目的目录。 该标志告诉海湾合作委员会不要警告你,你无法控制的东西。

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

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

有时你只需要压制一些警告,并且想保留其他警告,只是为了安全起见。 在你的代码中,你可以通过使用GCC的未使用属性来抑制variables甚至forms参数的警告。 可以说你有这个代码片段:

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

当你需要使用这个函数作为处理程序时,可能会出现这种情况 – 在C ++ Boost库中哪个(imho)是相当常见的。 那么你需要第二个正式的参数版本 ,所以函数的签名和处理程序所要求的模板是一样的,否则编译就会失败。 但是你真的不需要这个函数本身…

如何标记variables或从警告中排除的forms参数的解决scheme是这样的:

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

海湾合作委员会有许多其他参数,你可以检查他们的手册页 。 这也适用于C程序,不仅是C ++,而且我认为它可以用于几乎所有的函数,而不仅仅是处理程序。 继续尝试! ;)

PS:最近我用这个来压制Boosts在模板中的序列化警告,像这样:

 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))来指示编译器不使用特定的variables。

请参阅警告选项下的man gcc 。 你有一大堆unused

警告选项
… -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable

如果你用no-来加前缀,它会禁用这个警告。

很多选项的长名都以-f或者-W开头,例如-fmove-loop-invariants,-Wformat等等。 这些大多数都有正面和负面的forms; -ffoo的否定forms是-fno-foo。 本手册仅logging这两种forms中的一种,无论哪一种都不是默认值。

请求选项或取消警告中可以find更详细的解释

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

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

你如何禁用未使用的variables警告从gcc出来?
我得到错误的窗口提升,我不想触摸升压代码…

您访问Boost的Trac并提交一个针对Boost的错误报告。

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

 export IGNORE_WARNINGS=1 

它确实显示警告,但继续构build

删除 – -Wall ,它应该工作。 删除-Wall问题,它也会抑制合法的警告。 在这种情况下,您必须手动select-W选项,或者在覆盖所有警告-Wno-unused-variable更改为-Wno-unused-variable

 LOCAL_CFLAGS = -Wno-unused-variable -g