如何在minGW中禁用Eclipse中未使用的变量警告? 你似乎在使用GCC编译器使用微软C++风格的语法语法。“警告号”的概念(至少在该格式中)也是微软C++特有的。换句话说,这在GCC中不应该起作用
在Eclipse CDT中,我找不到警告号:如何在minGW中禁用Eclipse中未使用的变量警告? 你似乎在使用GCC编译器使用微软C++风格的语法语法。“警告号”的概念(至少在该格式中)也是微软C++特有的。换句话说,这在GCC中不应该起作用,c++,eclipse,pragma,C++,Eclipse,Pragma,在Eclipse CDT中,我找不到警告号: ../src/subfolder/ClassTwo.cpp:20:8: warning: unused variable 'x' [-Wunused-variable] 我试着这样做: #pragma warning(push) #pragma warning(disable: ?) //which number? #include "subfolder/ClassTwo.h" #pragma warning(pop) 但它不起作用 我的问题是:
../src/subfolder/ClassTwo.cpp:20:8: warning: unused variable 'x' [-Wunused-variable]
我试着这样做:
#pragma warning(push)
#pragma warning(disable: ?) //which number?
#include "subfolder/ClassTwo.h"
#pragma warning(pop)
但它不起作用
我的问题是:
看起来像是叮当声的输出。您可以使用此处概述的方法使用clang实现相同的目标: 如果那是你的源文件,那就这样 对于GCC,您可以使用以下方法:
当然,这将给你留下大量的语用噪音——如果这是一个坏事情,那么就值得商榷)< p>你似乎在使用GCC编译器使用微软C++风格的语法语法。“警告号”的概念(至少在该格式中)也是微软C++特有的。换句话说,这在GCC中不应该起作用 没有用于禁用/启用警告的标准语法,因此每个编译器将使用自己的语法。这意味着在C++中(引用你的标题)没有办法做到这一点。在每个特定的编译器中,只有几种方法可以做到这一点。为此,您必须查阅编译器文档 在GCC中,您应该能够通过命令行选项
-Wno unused variable
对整个翻译单元禁用所有此类警告。此外,在GCC中,您实际上可以通过\uuuuu attribute\uuuu((unused))
有选择地将变量标记为未使用,以抑制该特定变量的警告
由于修复“未使用的变量”警告几乎总是很容易的,因此我更愿意修复实际代码,而不是尝试使用pragmas修补它(这也可能隐藏其他未来的错误-例如,您添加了一个新函数:
int foo(int x, int y)
{
return x * x;
}
哎呀,这是一个输入错误,应该是返回x*y;
-一个警告会提示您情况就是这样
如有人所述,未使用的参数通过删除参数名称来处理:
int foo(int x, int) // Second parameter, y is not used
{
return x * x;
}
如果它是局部变量,则可以使用(void)y
(可能在aa宏中)来“假用它”:
或
如果它是一个函数参数,就不用命名了。假设您使用GCC,它更像是
#pragma GCC diagnostic
之类的东西。只要修复代码,警告就会自动消失…--顺便问一下,您怎么会认为禁用标题中的警告会有助于在.cppgeys,这可能是一个第三方头文件,它是用更宽松的约定构建的。如果不是,那么是的-只要修复它。@DavidRodríguez dribeas,公平地说,如果我在使用Windows API及其回调时不让某些东西未命名,即使它们需要特定参数,即使没有使用。@chris:所以让参数未命名,或者保持沉默通过强制转换为void发出的警告:void foo(int忽略){(void)忽略;…}
g++-I“C:\C++\gtest-1.6.0\gtest-1.6.0\include“-O0-g3-Wall-C-fmessage length=0-MMD-MP-MF”src/Test.d“-MT”src/Test.d“-”o“src/Test.o”“../src/Test.cpp”。/src/Test.cpp:1:0:警告:忽略#pragma警告[-Wunknown]../src/Test.cpp:2:0:警告:忽略#pragma警告[-Wunknown pragmas]../src/Test.cpp:3:0:警告:忽略#pragma警告[-Wunknown pragmas]../src/Test.cpp:5:0:警告:忽略#pragma警告[-Wunknown pragmas]@jiafu ok-链接了GCC方法并为您添加了一种修复警告的方法。谢谢,但我只想尝试pragma的功能,而不是自己编写正确的代码Microsoft的?UNREFERENCED_参数
?是的,似乎是这样。我也看到了“UNUSED(x)”作为宏来解决此问题。我建议使用\define UNUSED(x)(void)sizeof(x)
,我记不清确切的代码了,但我在向void抛出一些void指针时遇到了一些非常奇怪的随机崩溃,或者可能是指向void指针之类的。我使用了#定义未使用的(x)(void)(x)
很多次,包括涉及指针的时候。只要您传入实际变量,而不是,例如*x
,如果编译器崩溃,我会说这是一个bug。
int foo(int x, int y)
{
return x * x;
}
int foo(int x, int) // Second parameter, y is not used
{
return x * x;
}
int bar(int x)
{
int y; // Not used.
(void)y;
}
#define NOT_USED(x) (void)(x)
int bar(int x)
{
int y; // Not used.
NOT_USED(y);
}