2013-06-26 28 views
0

我得到我在標題中提到的錯誤,當我嘗試編譯下面的代碼:C++錯誤:Wunused,但設置變量

void Sql::select(const string table, const string column, const string condition, const string condition_2, const string condition_3) { 
otl_stream s; 
otl_column_desc* desc; 
int desc_len; 

const string select = str(format("SELECT %2% FROM %1% WHERE LEFT(%3%, 8) < %6% AND %4% = 'Ausstehend' AND (%5% = '1' OR %5% = '2') ") 
     % table % column % condition % condition_2 % condition_3 % getDate()); 

// cout << select; 
    try { 
     s.open(10, select.c_str(), con); 
    } catch (otl_exception &e) { 
     cerr << e.msg; 
    } 

desc = s.describe_select(desc_len); 

} 

,有人告訴我otl_column_desc *遞減設置但未使用。你能告訴我哪裏出了問題嗎?

+0

您正在捕獲「desc」中s.describe_select的返回值,但是您沒有對任何東西使用desc。如果你不打算使用它,你也可以放棄這個返回值。 – crowder

回答

0

它正是它說,你是設置的變量,但不使用任何地方的值,這意味着該變量,對於所有意圖和目的,沒用

desc = s.describe_select(desc_len);//value in desc never used 

這如果您在您的代碼錯誤有時會發生,並使用一些其他的變量時,你的意思是使用這一個,我想這個警告是抓這些情況。

但是,爲了回答你的問題,沒有什麼是錯因爲這是一個警告,而不是錯誤。這只是一個跡象表明某些東西可能是錯的。

+0

Wowowow,好吧,所以cout << desc就足夠了,擺脫那個錯誤?當我這樣做時,我曾經只用Java獲得警告,而不是像C++中的錯誤。謝謝! – FRules

+0

@DominikNitschmann這只是一個警告。我相信你提到的國旗可能會強制警告錯誤。如果你不需要這樣的變量,更好的方法是將其刪除。 –

+0

@DominikNitschmann我認爲這應該只是一個警告。該標誌似乎啓用了警告,並沒有使它成爲一個錯誤 –