你以後的選項可能-Wmaybe-uninitialized
或-Wuninitialized
。這兩個都是-Wall
選項的一部分,它打開了這些選項,還有許多其他警告(-Wxxx
選項與警告相關)。
有關gcc警告選項的完整文檔可在以下位置閱讀:Options to Request or Suppress Warnings gcc文檔中。
您可能還會發現-Wextra
可能對您有用(單獨使用或與-Wall
結合使用)。 -Wextra
也啓用-Wuninitialized
,但它有其他項目並不總是由-Wall
設置,我喜歡看到的東西(如-Wunused-parameter
和-Wunused-but-set-parameter
),雖然這不是特定於此位代碼。
這就是說......(是啊,有一個「上面寫着」)......我似乎不能胳肢錯誤與海灣合作委員會,它是此功能可在http://gcc.godbolt.org。
擴展一些你的代碼是專門的文檔中的-Wmaybe-uninitialized
#include <iostream>
using namespace std;
int main() {
int a, b;
int x, y, z;
// warning: variable ‘y’ set but not used [-Wunused-but-set-variable]
cin >> a;
while (a>0) b++;
switch(a) {
case 1: x = 1; y = 1; z++; break;
// warning: ‘z’ may be used uninitialized in this function [-Wmaybe-uninitialized]
case 2: x = 4; y = 2; break;
case 3: x = 5; y = 3;
}
cout << a;
cout << b;
cout << x;
}
這說明是癢癢了一批閒置和成套警告的嘗試。我能夠得到z
變量產生的錯誤,但由於某種原因b++
在while循環不會產生錯誤或警告與gcc(使用gcc 4.9.0進行測試)。
鐺版本3.4.1,但是,併產生與這些命令行選項警告兩個b
和z
雖然-Wall
和-Wextra
應產生警告後,由於某些原因,他們不會產生這個特定的代碼在海灣合作委員會4.9.0
你有沒有嘗試'g ++ -Wall -Wextra'? – 2014-09-21 17:40:40
我的測試顯示海灣警備局沒有發出警告,並帶有重大警告組(-Wall,-Wextra,-pedantic)和Clang發出警告。 – chris 2014-09-21 17:41:01
您可以添加編譯標誌即。 -壁。 HTTP://計算器。com/questions/11714827/how-to-turn-on-literally-all-of-gccs-warnings – risque 2014-09-21 17:41:28