2013-01-22 41 views
3

是否有VS2010 C++有,如果我這樣做C++:請VS2010抱怨 「如果」 和 「=」

if (somevar = 2) 
{ 
    ... 

的IDE抱怨什麼辦法?

我試圖注意寫==而不是=,但不僅僅是使用C++,還有VB和其他語言,它有時會發生。

有時需要很多時間才能找到與我的故障相關的錯誤。

我認爲一個真正想編寫if語句的可能性,它也賦予變量一個新值(如上面的示例中所示)是相當小的。這就是爲什麼我希望VS2010可能包含一個選項,告訴我可能存在的缺陷,但我沒有找到一個。

有沒有這樣的選擇?

+1

內分配,如果它涉及到的文字,你可以使用一個另類的風格,像'(2 == somevar)' 。如果你錯誤地輸入了錯誤== == –

+0

「我認爲人們真正想編寫一個if語句也可以給變量賦予一個新值(如上面的例子中所示)的可能性非常小。」這並不意味着它從不發生;) – Kevin

+0

如果你特別想在if中賦值,你可以使用另一個符號來表示你想要這樣做,例如, 'if((somevar = othervar))...'注意你不能用這種方式聲明變量,也就是'if((int somevar = othervar))...'不會編譯,但是'if(int somevar = othervar)...'很好。 – mark

回答

6

是的,有:

warning C4706: assignment within conditional expression 

只要確保你打開所有的(不太都在MSVS)警告。 (project properties -> C/C++ -> General -> Warning Level

另一種方法是使用YODA條件(2 == somevar),但這很醜。 :)

+0

太棒了!你能告訴我在哪裏激活它嗎?或者我必須直接將其包含在我的代碼中? – tmighty

+0

@tmighty項目屬性 - > C/C++ - >常規 - >警告級別 –

+1

在某些編譯器中打開所有警告可能是一個好主意,但不是VC++。否則,你會被完全正常的代碼中發生的事情警告不知所措。您甚至會從標準庫中收到警告。最好在個案基礎上啓用警告,至少在4級。 –

0

右鍵單擊解決方案資源管理器中的項目名稱,選擇屬性,轉至配置屬性| C/C++ |一般,並設置警告級別級別4。你不會得到一個錯誤,但警告:

警告C4706:條件表達式