如何在minGW中禁用Eclipse中的未使用变量警告?

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)

但它没有用.

我的问题:

  1. 如何在Eclipse CDT中获取此警告编号?
  2. 应该如何编写pragma指令?

Mat*_*son 6

由于它几乎总是很容易修复"未使用的变量"警告,我更倾向于修复实际的代码,而不是试图用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)


jus*_*tin 3

它看起来像 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)

当然,这会给你留下大量的杂注噪音——如果这是一件坏事,那就值得商榷 =)