你如何禁用未使用的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