對VS2005C++編譯器的一點體會

字號:

使用了一段時間的 Visual Studio 2005 之后,發(fā)現(xiàn)它的 C++ 編譯器比以往更多地遵循 C++ 標準。給我印象比較深的語法變化有兩個:
    1、for 循環(huán)語句中循環(huán)控制變量的有效范圍更加明確
    以前我們在for語句中可以這么寫:
    for (int i=0; i    // do something
    }
    if (i>0) {
    // do something else
    }
    這段代碼中 i 是循環(huán)控制變量,循環(huán)處理完之后,在循環(huán)語句之外,i 還是一個有效變量,可以在后面的代碼中繼續(xù)使用它。
    在正式的 C++ 標準中,這是不允許的。
    使用新的編譯器編譯原有的代碼時,必須作類似下面這樣的修改:
    int i; // move outside for loop
    for (i=0; 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,現(xiàn)在變?yōu)?LRESULT。