Visual Studio 2012發(fā)布的那一天我就把它搞到手了。新的C++ IDE真的是勁爆了,寫代碼的感覺毫不亞于C#。我最喜歡的部分是智能補(bǔ)全和著色部分。如今C++的宏被渲染成屎紅色,類型被渲染成屎綠色,參數(shù)被渲染成屎灰色,這樣基本不需要要編譯,看著顏色都知道有沒有寫對。智能補(bǔ)全已經(jīng)趕超VAX,而且還實(shí)現(xiàn)了“縮寫過濾”,譬如說輸入PNT就可以在彈出列表里面顯示所有大寫字母為PNT的對象(譬如說ParsingNodeTransition)等等。這樣做的好處是,我只要打有限幾個字符就可以補(bǔ)完一整句了,輸入速度大大提高。
所以我升級了幾乎所有工程。文檔生成部分由于還在使用DIA100,所以暫時(shí)沒有升級到2012,不過這是遲早的事情。不過這次升級遇到了幾個小問題。
第一個是,對于沒有capture任何外部變量的lambda expression,它可以隱式轉(zhuǎn)換成一個函數(shù)指針。這個功能VS2010是沒有的,結(jié)果升級了之后造成了我?guī)讉€重載函數(shù)的問題,不過解決這個東西還是很簡單的,只要把lambda表達(dá)式先保存在一個vl::Func變量里面就好了。
第二個是WICImagingFactory。在Windows SDK 7.0里面,CLSID_WICImagingFactory指向了WIC的唯一一個版本。在Windows SDK 8.0里面,出現(xiàn)了CLSID_WICImagingFactory1和CLSID_WICImagingFactory2,并且CLSID_WICImagingFactory等于CLSID_WICImagingFactory2。問題就來了,Windows 7里面并沒有WICImagingFactory2,結(jié)果我CoCreateInstance就是敗了。一開始覺得很奇怪,后來想了想,直接用VS那強(qiáng)大的Go To Definition功能跳到了定義CLSID_WICImagingFactory的地方,然后發(fā)現(xiàn)了這個事情。因此我就把代碼改成了,如果sdk用的是高級版本,就強(qiáng)制使用1.0的。
VS2012對模板語法的檢查更加嚴(yán)格了。以前還可以寫typename A<T>::B<T>,現(xiàn)在不行了,得寫成typename A<T>::template B<T>。其實(shí)后面那個才是標(biāo)準(zhǔn)的,而且VS2010也支持。只是VS2010也允許你省略template。
VS2012對于C++的改進(jìn)已經(jīng)跟C#幾乎一模一樣了,而且VS2012還支持C++的單元測試項(xiàng)目。總的來說,我十分喜歡。
posted on 2012-08-30 05:29
陳梓瀚(vczh) 閱讀(11025)
評論(25) 編輯 收藏 引用 所屬分類:
C++