jia*_*afu 5 c++ eclipse pragma
如何在minGW中禁用C++中的以下警告?
warning: unused variable 'x' [-Wunused-variable]
Run Code Online (Sandbox Code Playgroud)
在Eclipse CDT中,我找不到警告编号:
../src/subfolder/ClassTwo.cpp:20:8: warning: unused variable 'x' [-Wunused-variable]
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
#pragma warning(push)
#pragma warning(disable: ?) //which number?
#include "subfolder/ClassTwo.h"
#pragma warning(pop)
Run Code Online (Sandbox Code Playgroud)
但它没有用.
我的问题:
由于它几乎总是很容易修复"未使用的变量"警告,我更倾向于修复实际的代码,而不是试图用pragma修补它(这可能会隐藏其他未来的错误 - 例如你添加一个新函数:
int foo(int x, int y)
{
return x * x;
}
Run Code Online (Sandbox Code Playgroud)
糟糕,这是一个错字,它应该是return x * y;- 一个警告会告诉你这是事实.
如上所述,未使用的参数通过删除参数的名称来处理:
int foo(int x, int) // Second parameter, y is not used
{
return x * x;
}
Run Code Online (Sandbox Code Playgroud)
如果它是局部变量,那么你可以使用(void)y(可能在一个宏中)"假冒它":
int bar(int x)
{
int y; // Not used.
(void)y;
}
Run Code Online (Sandbox Code Playgroud)
要么
#define NOT_USED(x) (void)(x)
int bar(int x)
{
int y; // Not used.
NOT_USED(y);
}
Run Code Online (Sandbox Code Playgroud)
它看起来像 clang 的输出。您可以使用 clang 使用此处概述的方法实现相同的目的:http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
#include "subfolder/ClassTwo.h"
#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)
如果那是您的源文件,那么只需修复警告即可。
对于 GCC,您可以使用以下命令:Selectively disable GCC warnings for only part of a Translation Unit?
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
#include "subfolder/ClassTwo.h"
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)
当然,这会给你留下大量的杂注噪音——如果这是一件坏事,那就值得商榷 =)
| 归档时间: |
|
| 查看次数: |
7991 次 |
| 最近记录: |