Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在minGW中禁用Eclipse中未使用的变量警告? 你似乎在使用GCC编译器使用微软C++风格的语法语法。“警告号”的概念(至少在该格式中)也是微软C++特有的。换句话说,这在GCC中不应该起作用_C++_Eclipse_Pragma - Fatal编程技术网

如何在minGW中禁用Eclipse中未使用的变量警告? 你似乎在使用GCC编译器使用微软C++风格的语法语法。“警告号”的概念(至少在该格式中)也是微软C++特有的。换句话说,这在GCC中不应该起作用

如何在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) 但它不起作用 我的问题是:

在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)
但它不起作用

我的问题是:

  • 如何在EclipseCDT中获取此警告号
  • pragma指令应该如何编写

  • 看起来像是叮当声的输出。您可以使用此处概述的方法使用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);
     }