使用了一段時間的 Visual Studio 2005 之後,發現它的 C++ 編譯器比以往更多地遵循 C++ 標准。給我印象比較深的語法變化有兩個:
1、for 循環語句中循環控制變量的有效范圍更加明確
以前我們在for語句中可以這麼寫:
for (int i=0; i<max; i++) {
// do something
}
if (i>0) {
// do something else
}
這段代碼中 i 是循環控制變量,循環處理完之後,在循環語句之外,i 還是一個有效變量,可以在後面的代碼中繼續使用它。
在正式的 C++ 標准中,這是不允許的。
使用新的編譯器編譯原有的代碼時,必須作類似下面這樣的修改:
int i; // move outside for loop
for (i=0; i<max; i++) {
// do something
}
if (i>0) {
// do something else
}
2、關於常量的類型定義更加嚴格了,對於下面這樣的常量定義,以前編譯器會將之默認為 int 類型:
const BUFLEN=255;
但在新的編譯器中,這種隱式地將沒有類型聲明的常量指定為整型的語法將被禁止。必須向下面這樣聲明類型:
const int BUFLEN=255;
3、除此之外,在使用 Visual Studio 2005 編寫 MFC 程序時,還碰到一個小小的變化,那就是 CWnd::OnNcHitTest 的返回值原來為 UINT,現在變為 LRESULT。