自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對Visual C++ 2005編譯器進(jìn)行學(xué)習(xí)研究

開發(fā) 后端
對于微軟推出的Visual C++ 2005編譯器的成功面世,就令無數(shù)C++語言愛好者對此垂涎不已;它與ISO C++標(biāo)準(zhǔn)保持98%的一致——這比以前任何一個版本都更加接近。

微軟Visual C++開發(fā)小組在廣泛聽取意見的基礎(chǔ)上,重新改進(jìn)了c,在Visual Studio .NET 2002中那種“笨拙”的C++托管擴(kuò)展語法已經(jīng)一去不復(fù)返了,而修訂后的語言定義帶來的是一個完全充滿吸引力的新語法。

和一體化的語言支持特性,如部分模板專用化;同時也包括了增強(qiáng)的緩沖區(qū)安全檢查和改進(jìn)的編譯器診斷功能。以往使用C#和Visual Basic® .NET的開發(fā)者,通過簡單的拖放操作,就能生成穩(wěn)健的Windows窗體應(yīng)用程序,如今,C++的開發(fā)者也加入了進(jìn)來。

而且,這個編譯器還對Intel Pentium 4和AMD Athlon處理器作了優(yōu)化處理。如果Visual C++ .NET 2003都令你興奮不已,那么它的***版本Visual C++ 2005,足夠令你高興得發(fā)狂了。對于 .NET開發(fā),Visual C++ 2005如今有了一套新的語法,不但顯得更“優(yōu)雅”,而且更強(qiáng)大;

它擁有新的優(yōu)化技術(shù),可使程序的速度***提高30%;同時新的編譯模式,可保證在Microsoft® .NET Framework之上生成完全遵從CLI(Common Language Infrastructure)的可驗(yàn)證代碼;而且新的interop模式,可提供本地與托管代碼的無縫融合。#t#

相對于前兩個版本,新編譯器還包括了一個增強(qiáng)版本的緩沖區(qū)安全檢查選項(xiàng),而且對C++程序普遍使用的庫,也有新的注重安全的版本。Visual C++ 2005對基于Intel Itanium和AMD64的64位平臺,提供了對OpenMP標(biāo)準(zhǔn)的支持,并且修正了一些混合DLL加載的問題,對Double P/Invoke(雙轉(zhuǎn)換)的性能問題,提供了自動運(yùn)行時消除。關(guān)于類似的增強(qiáng)和改進(jìn)還有很多很多,正如一位C++架構(gòu)師說的那樣,“如今,C++終于站在了它應(yīng)該站的位置上”。

可能我們中有不少人都發(fā)現(xiàn),要在前兩個版本的C++中使用托管擴(kuò)展語法,會非常麻煩并且錯誤重重,也許還會覺得,Visual C++并非是 .NET開發(fā)的***語言。

微軟Visual C++開發(fā)小組在廣泛聽取意見的基礎(chǔ)上,重新改進(jìn)了c,在Visual Studio .NET 2002中那種“笨拙”的C++托管擴(kuò)展語法已經(jīng)一去不復(fù)返了,而修訂后的語言定義帶來的是一個完全充滿吸引力的新語法。在語言設(shè)計(jì)上,微軟Visual C++開發(fā)小組制定了一些主要的目標(biāo)。

首先(對那些認(rèn)為編程是藝術(shù)的人來說,也許是最重要的),他們要保證在開發(fā)者在編寫C++代碼時感覺自然,為達(dá)到這個目的,他們對ISO C++標(biāo)準(zhǔn)作了一個在語法上優(yōu)雅的純粹擴(kuò)展,目的是為了在像單擊部署、窗體設(shè)計(jì)支持和SQL Server™ 2005的托管代碼支持這些地方。

可更簡單地用C++編寫可驗(yàn)證的代碼。他們想要設(shè)計(jì)出一個超過C++的語言,要帶給C++全部的 .NET能力,同時也要帶給 .NET全部的C++能力?,F(xiàn)在看來,他們非常的成功。

新的擴(kuò)展規(guī)范被稱為“Visual C++ 2005”,并且正在被標(biāo)準(zhǔn)化。在閱讀代碼時,最引人注意之處就是,以往那種在托管擴(kuò)展中定義垃圾回收類、屬性等等常用到的雙下劃線關(guān)鍵字,現(xiàn)在已成為了歷史。雖然也有一些類似的關(guān)鍵字被保留,但由于不會被經(jīng)常用到,所以不會對代碼的可讀性造成影響。這些雙下劃線關(guān)鍵字如今被兩種新的“關(guān)鍵字”取代:“上下文敏感”和“空格”。“上下文敏感”關(guān)鍵字是只在特定的上下文中,才是關(guān)鍵字;

而“空格”關(guān)鍵字只在聯(lián)合其他關(guān)鍵字時,才會是關(guān)鍵字。例如:在托管擴(kuò)展中的關(guān)鍵字__property已被關(guān)鍵字property取代(不只是這樣,定義和訪問屬性的整個語法都被精煉了,它的聲明與C#看起來很相似,參見插1),而且在你的代碼中,還可以使用property作為變量名,只有在一個類型中聲明屬性時,“property”才會被當(dāng)作一個關(guān)鍵字。

現(xiàn)在,Visual C++ 2005對任何類型的托管和本地對象,都提供了一個析構(gòu)函數(shù)或結(jié)束器(finalizer)。當(dāng)類型是托管時,編譯器映射一個析構(gòu)函數(shù)到IDisposable::Dispose方法中。

這意味著,你可用C++來編寫同樣的方法——如插3中的第四段代碼,而且reader的析構(gòu)或清除方法會被自動調(diào)用,就好像在C#中使用“using”一樣。這樣,當(dāng)創(chuàng)建在堆棧上的類型超出作用范圍之后,它的析構(gòu)函數(shù)就會被調(diào)用。
托管擴(kuò)展帶來的***問題就是指針問題了。

雖然指針很難理解,但卻是應(yīng)付多種任務(wù)和多種情況的“多面手”。在Visual C++ 2005中,指針仍舊是老式的C++指針,它指向一個對象,并能執(zhí)行一些算法。引用一個對象的指針,它的生存期必須由開發(fā)者顯示地管理,當(dāng)與指針打交道時,運(yùn)行時庫可不負(fù)責(zé)清理它。
 
現(xiàn)在,來看一下Visual C++ 2005的設(shè)計(jì)者是怎樣實(shí)現(xiàn)的吧,Visual Studio .NET 2003和Visual Studio .NET 2005中的new操作符通常返回一個指針,而gcnew操作符返回一個“句柄”,一個用脫字符 ^ 語法表示的一個結(jié)構(gòu),此句柄指向托管堆的對象。

因此,它們不能指向interior類型,而且在用法上,編譯器也作了不少限制,以便開發(fā)者正確、安全地使用它們。句柄不能執(zhí)行指針?biāo)惴?,也不能轉(zhuǎn)換成一個空指針或任何其他整數(shù)類型,話說回來,依然可使用星號(*)和箭號(->)操作符。

這不是說,你再不能取得一個指向垃圾回收堆中的指針了,在Visual C++ 2005中的pin_ptr,可用于取得托管堆中對象的一個固定指針,只要這個指針存在,對象就被固定在托管堆中,以防止垃圾回收器清除它;Visual C++ 2005同時也引入了“引用跟蹤”操作符,以百分號 % 表示。

當(dāng)年在Visual C++ 2005中引入 & 引用操作符時,大多數(shù)開發(fā)者把它理解成一個指向?qū)ο蟮闹羔?,而且由編譯器自動解引用。在很多方面來說,% 之于 ^,就像 & 之于 *。

在托管世界中,對托管對象的本地引用,與指向托管對象的本地指針一樣危險(xiǎn),指針和引用的基本原理在于,被引用的對象不能四處移動。引用跟蹤與本地引用非常類似。

除了它引用的對象是在托管堆中,而且被垃圾回收器移動之后,還能繼續(xù)跟蹤它們。百分號 % 操作符用來取托管對象的地址,就像 & 操作符對于本地對象的功能一樣,百分號 % 操作符可返回一個托管引用類型對象的句柄。

責(zé)任編輯:chenqingxiang 來源: NET130
相關(guān)推薦

2010-01-15 16:37:28

Visual C++

2009-01-12 10:16:11

Visual C++編譯器選項(xiàng)設(shè)置

2010-01-12 14:22:26

Visual C++

2010-01-22 16:55:52

C++編譯器

2010-01-13 17:12:26

C++編譯器

2013-03-18 09:42:47

C++C++ 11

2010-01-18 10:34:21

C++編譯器

2010-01-21 09:11:38

C++編譯器

2015-03-23 10:04:43

c++編譯器c++實(shí)現(xiàn)原理總結(jié)

2009-11-30 17:20:34

Visual Stui

2010-01-08 16:00:46

C++編譯器

2010-01-18 10:28:15

C++編譯器

2010-01-11 11:02:59

Visual C++

2010-10-20 13:43:37

C++編譯器

2010-01-14 15:29:44

C++編譯器

2010-02-03 13:14:03

C++編譯器命令

2010-01-12 16:42:59

C++編譯器

2010-01-21 09:26:53

CC++編譯器

2009-12-11 09:42:00

Visual Stud

2010-01-15 17:18:57

C++源程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號