2013-05-14 33 views
5

如何在minGW中禁用C++中的以下警告?如何在minGW中禁用Eclipse中的未使用變量警告?

warning: unused variable 'x' [-Wunused-variable] 

在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) 

但沒有奏效。

我的問題:

  1. 如何我能得到這個在Eclipse CDT警告多少?
  2. 應如何指示指令寫?
+3

如果它是一個函數的參數,只是把它命名。假設你使用GCC,但它更像'#pragma gcc diagnostic'或其他東西。 – chris 2013-05-14 15:37:46

+1

只需修復代碼,警告就會自行消失......順便說一下,是什麼讓您認爲禁用標題中的警告將有助於發現似乎在.cpp – 2013-05-14 15:41:42

+0

傢伙中發生的警告,它可能是一個第三方頭,它是用更輕鬆的約定建立的。如果沒有,那麼是的 - 只是修復它。 – justin 2013-05-14 15:42:20

回答

3

它看起來像從鐺輸出。您可以使用本文介紹的方法實現使用相同的鏗鏘: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 

如果這是你的源文件,然後就fix the warning

對於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 

當然,這將讓你與編譯噪音量好 - 值得商榷,如果這是一件壞事=)

+0

這只是gcc不鐺 – jiafu 2013-05-14 15:43:23

+0

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-pragmas] ../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 2013-05-14 15:44:05

+0

@jiafu ok - 將GCC方法和爲您解決警告添加了一種方法。 – justin 2013-05-14 15:49:43

3

你似乎在GCC編譯器中使用Microsoft C++風格的編譯指示語法。 「警告號碼」(至少在該格式中)的概念也是Microsoft C++特有的。換句話說,這在GCC中不適用。

有禁用/啓用警告沒有標準語法,所以每個編譯器將使用自己的。這意味着無法在「C++」中引用(引用您的標題)。在每個特定的編譯器中只有這樣做的方法。你必須諮詢你的編譯器文檔。

在GCC,你應該能夠通過-Wno-unused-variable做禁用所有這樣的警告對整個翻譯單元的命令行選項來做到這一點。而且,在GCC中,實際上可以通過__attribute__((unused))有選擇地將變量標記爲未使用,以禁止針對該特定變量的警告。

http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes

6

因爲它幾乎總是容易解決「未使用變量」的警告,我非常喜歡來解決實際的代碼不是試圖用編譯指示修補起來(可能隱藏其它,未來的錯誤太多 - 比如你添加新的功能:

int foo(int x, int y) 
{ 
     return x * x; 
} 

哎呀,這是一個錯字,它應該是return x * y; - 警告會給你跡象表明這種情況。

int foo(int x, int) // Second parameter, y is not used 
{ 
     return x * x; 
} 

如果它是一個局部變量,那麼你可以使用(void)y(也許在AA宏)爲「假使用:

未使用的參數,正如有人所提到的,通過去除參數的名稱處理它「:

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); 
} 
+0

謝謝,但我只想試試雜注的功能,不寫正確的代碼自我 – jiafu 2013-05-14 15:49:06

+0

什麼是微軟的? 'UNREFERENCED_PARAMETER'? – chris 2013-05-14 15:50:50

+0

是的,這似乎是這種情況。我也看到了「UNUSED(x)」作爲這個宏。 – 2013-05-14 15:58:29

相關問題