Visual C 2008新特性速遞

2021-06-08 06:45:32 字數 3766 閱讀 3933

visual c++整合開發環境的變化

1、在atl、mfc及win32應用程式中建立的對話方塊現在已符合windows vista樣式標準了。使用visual c++ 2008建立的新工程中所有對話方塊現在都會符合vista視窗樣式,但如果編譯乙個早期visual c++版本建立的工程,對話方塊仍會保持原有的視窗樣式。

2、在atl工程嚮導中,可選擇為所有使用者註冊元件。從visual studio 2008開始,由atl工程嚮導建立的com元件與型別庫,如未選擇為所有使用者註冊,預設將註冊在hkey_current_user中。

3、登錄檔寫入能被重定向。隨著vista而來的安全性要求,如果程式想寫入到登錄檔的某特定區域,需要以許可權提公升模式執行,那總不可能總是以提公升模式執行visual studio吧,所以,對登錄檔hkey_classes_root區域的寫入將自動重定向到hkey_current_user,而不需要進行任何程式設計。

4、類設計器現在可提供對本機c++**的有限支援。在visual studio的早期版本中,類設計器僅能用於visual c#和visual basic,現在,c++程式設計師也能使用類設計器了,但只限於唯讀模式。

visual c++庫的變化

1、stl/clr庫。編寫託管**的程式設計師是不是又該高興了,現在visual c++已包含了stl/clr庫(即之前的stl.net,stl.net為當時把stl移植到 .net平台的專案代號)。stl/clr庫是對標準模板庫(stl)的封裝,其是標準c++庫的乙個子集,stl/clr結合了c++模板與 .net的泛型概念,允許c++程式設計師在stl容器與演算法中使用 .net型別。現在,stl中的容器類(container)、迭代子(iterator)、演算法等等,還不是照樣信手拈來。

2、mfc庫。新的mfc9提供了支援windows vista的通用控制項,新增了超過150個方法用於支援vista的新特性及改進現有mfc類的功能,如新的cnetaddressctrl類可用於輸入及驗證ipv4及ipv6位址或dns名、新的cpagerctrl類可簡化選項卡控制項的使用、新的csplitbutton類可簡化splitbutton控制項的使用。

另外,不得不提的是,微軟計畫在2023年年中的某個時間,發布對mfc庫的乙個重大更新,可使程式設計師構造具有超現代使用者介面的程式,如類似office 2007 ribbon、office樣式選單、visual studio樣式的停靠工具欄、mdi程式中的多選項卡文件,此次更新的元件在windows 2000以上的作業系統均可執行,如下圖所示。

當然了,這次重要的更新不僅僅是在介面上,內部功能上也有不少亮點,如智慧型指標、正規表示式解析、新的容器類(tuple、array、unordered set等等)、完善的隨機數產生器、多態函式包裝器、新的外殼(shell)類等等。我們完全有理由相信,這次的mfc更新,將讓visual c++程式設計師重拾本機**開發的信心。

3、c++支援庫。visual c++ 2008引入了排程庫(marshaling library),排程庫提供了一種簡單及優化的方法在本機與託管環境之間排程資料,可用於代替複雜且低率的pinvoke方法,且語法非常之簡單:

#include

tchar* c_style_string = _t("c style string");

system::string^ dotnetstring = msclr::interop::marshal_as(c_style_string);

4、atl server。要注意的是,現在visual studio 2008中已不再包含atl server。atlenc.h中的資料編碼、解碼類,atlutil.h、atlpath.h中實用工具函式及類現在已是atl庫的一部分了。另外,只要微軟還對早期的visual studio版本提供支援,就會對其中早期版本的atl server提供支援,

visual c++編譯器及鏈結器的變化

1、編譯器的變化。

編譯器已可支援託管**增量生成。開啟這個選項後,當引用的程式集發生改變時,編譯器不會馬上重新編譯**,而是進行增量生成,只對那些影響依賴性的**檔案重新編譯。

編譯器支援intel酷睿2微架構。編譯器支援在**生成期間對intel酷睿2微架構進行適當的微調(tune),這種調整不會影響其他架構的cpu。

對amd及intel cpu指令集的內建支援(intrinsics),可對兩者近幾年的指令集提供高度支援,應盡量使用這些內建支援,而不是內聯彙編(inline asm)來訪問cpu指令集。這些函式提供對supplemental streaming simd extensions 3(ssse3)、streaming simd extensions 4.1(sse4.1)、sse4.2、sse4a的支援,其中某些高階位操作指令集只存在於intel penryn及nehalem架構cpu和amd k10架構的opteron及phenom中,所以,在使用之前,應確定要使用的內建函式是否被相應的平台支援,否則會導致執行時錯誤。

__cpuid函式已更新。__cpuid函式現在支援amd及intel最新的cpu。

/mp編譯器選項可減少總體生成時間。/mp選項可使編譯器建立多個程序,同時編譯幾個源**檔案,由此極大地減少了總體生成時間。在那些支援intel超執行緒技術、多個處理器或多核處理器的平台上尤其有用。

visual c++ 2008中已不贊成使用/wp64編譯器選項及__w64關鍵字。/wp64編譯器選項及__w64關鍵字是用於檢測64位可移植性問題的,在這個版本的visual c++中已不贊成使用,並且會在未來的版本中完全移除。要進行64位程式設計,請配置編譯器生成目標為64位平台。

/qfast_transcendentals。為超越數函式(transcendental)生成內聯**。

/qimprecise_fwaits。當使用/fp:except編譯器選項時,移除try中的fwait命令。

2、鏈結器的變化

使用者賬戶控制現在已嵌入在可執行檔案的清單檔案中。這個功能預設是開啟的,如圖所示。

鏈結器現在可使用/dynamicbase選項以開啟windows vista上的位址空間隨機排列(address space layout randomization)功能。這個選項修改了可執行檔案頭,以表明程式在載入時,是否可以隨機重新定位基址。

當然在鏈結選項中,也少不了資料執行保護(dep),見下圖。

visual c++ 2008的發布,無疑把c++這種開發語言又推到了乙個新的高度,從底層系統驅動開發到高層 .net程式設計,都不在話下,而且在功能性、安全性、易用性上有了顯著的進步,將來,隨著c++0x標準的臨近及iso 2003標準c++庫的普及,visual c++必定又有一片新的天地,作為程式設計師的你,還等什麼呢。

Visual C 3 0 新特性概覽

在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這也是本文所討論的主要內容 隱式型別本地...

Visual C 3 0 新特性概覽

在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這也是本文所討論的主要內容 隱式型別本地...

Visual C 3 0 新特性概覽

visual c 3.0 新特性概覽 在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這...