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