成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大致闡明使用Visual Stuio 2005編譯器的操作

開發(fā) 后端
本文介紹關于Visual Stuio 2005編譯器調(diào)試與運行的問題,這些內(nèi)容都是我今天花花了一周的時間查閱資料并像IT精英學習出來的,歡迎大家指正。

現(xiàn)在,Visual Stuio 2005編譯器可保證所有的本地全局變量及對象先初始化,然后才初始化托管全局變量及對象。這意味著,以前的代碼可能會在屬性方面碰到一個從未有過的編譯器錯誤。

1、參數(shù)的有效性

在C運行時庫中,加入了一些代碼,以檢查參數(shù)的有效性。例如:如果傳遞的目標緩沖區(qū)大小不足以strcpy使用--通常這是在冒安全風險,而新版本此時則會調(diào)用一個非法參數(shù)處理程序。在release版中,會調(diào)用Dr.Watson;而在debug版中,會產(chǎn)生斷言(assert),當然,只要程序中傳遞的參數(shù)都是有效的,就不會有什么問題了。

2、對非安全API的警告

在Visual C++ 2005中,CRT中的一組函數(shù)已不再建議使用,而應使用新提供的安全版本。大多數(shù)這些不建議使用的函數(shù)如果使用不當,將會導致緩沖區(qū)溢出或其他安全問題,這些函數(shù)如:strcpy、strcat等等。這些函數(shù)新的安全版本都在函數(shù)名后加了一個_s后綴,以方便識別,如strcpy_s、wcscpy_s、mbscpy_s、calloc_s和strcat_s這些函數(shù)。

如果想繼續(xù)使用老版本、非安全的函數(shù),可在源代碼開始處加上#define value of _CRT_SECURE_NO_DEPRECATE(此處value代表某一數(shù)值);然而,還是建議大家升級代碼使用新的安全函數(shù)。

3、迭代器越界

受檢查的迭代器(checked iterators)和調(diào)試迭代器(debug iterators)也因為安全的原因進行了相應的更新,如果迭代器越界,則相應會調(diào)用一個非法參數(shù)處理程序。

再次提醒,可以通過拋出一個越界異常來避免產(chǎn)生非法參數(shù)問題。在代碼中加入#define value of _SECURE_SCL_THROWS,并把value值設為1,這樣就不會調(diào)用非法參數(shù)處理程序,而是產(chǎn)生一個異常了。

也可以通過設置#defined value of _SECURE_SCL值為零,關閉此迭代器檢查,通常默認情況下,此選項是打開的。#t#

4、time_t類型

time_t類型通常用于顯示從1970年開始以來的秒數(shù)。直到Visual C++ 7.1(即Visual C++ .net 2003),time_t類型都被定義為一個long,而到了Visual C++ 2005中,已被定義為一個64位類型,可用于顯示一直到3000年的時間了。

5、鏈接到CRT

托管應用程序現(xiàn)在不能靜態(tài)鏈接到CRT。以往,在Visual C++ 7.0和7.1中(指Visual Studio .NET 2002與2003),可以生成靜態(tài)鏈接到CRT的CLR程序,而在Visual Studio 2005卻行不通。
6、單線程CRT支持

在Visual Studio 2005中,已經(jīng)取消了單線程CRT支持。而且用發(fā)展的眼光來看,未來大多數(shù)的人還是愿意使用線程安全的多線程代碼。
在線程中,可使用_nolock后綴來優(yōu)化代碼,但同時,這些函數(shù)是非線程安全的。

7、異常處理

有兩種類型的異常處理可供選擇:/EHa(異步的)和/EHs(同步C++異常)。在以前,如果使用了/EHs,那么在一個catch(…)塊中,也許可能、也許不可能捕捉到結構化異常,因為此行為是沒有定義且不可靠的;現(xiàn)在,再使用/EHs時,就可保證不會捕捉到結構化異常。如果想與以前版本的Visual C++保持一致,并且捕捉異步結構化異常,還是應該在編譯時使用/EHa。

8、初始化順序

以往,如果代碼中同時有托管與本地全局變量及對象,那么初始化順序是不確定的;如代碼中存在托管對象與本地對象互操作,就不能保證哪一個對象先初始化了。現(xiàn)在,Visual Stuio 2005編譯器可保證所有的本地全局變量及對象先初始化,然后才初始化托管全局變量及對象。

9、printf

就目前來說,printf中的%n格式化指示符一般用于指定輸出的字符個數(shù)。這已經(jīng)確認為一個安全隱患,并且已禁用,但可以使用set_printf_count_output來啟用它;通過傳遞給set_printf_count_output一個零值(0)可禁用它,而傳遞任意一個其他值可再次啟用。

10、swprintf函數(shù)

為與C++標準保持一致,對swprintf函數(shù)也作了修改,現(xiàn)在它已遵循C++標準了。在C++中,通過適當?shù)膮?shù),可實現(xiàn)重載;這個函數(shù)的老版本已不再建議使用,因為在C中,是不允許重載的,因此如果使用老格式,將會返回一個錯誤。
編譯器中的突破性變化

除了那些會影響到庫的變化之外,也有一些變化會影響到編譯器。以下是Visual C++ 2005中編譯器的主要變化,需再次提醒的是,此處并沒有列出所有的變化,但卻是微軟公司VC++使用者及內(nèi)部合作者所確認的關鍵性變化。

指向成員的指針

在之前的Visual Stuio 2005編譯器版本中,一個指向成員的指針不需使用取址操作符(&)就能獲取,現(xiàn)在,Visual C++ 2005已經(jīng)嚴格按照標準,必須要使用取址操作符,這也有助于消除潛在的運行時錯誤。但也導致了MFC庫的許多地方需要修改,同時意味著,可能會對現(xiàn)有的程序造成影響。

范圍限制規(guī)則

在for循環(huán)聲明中,默認情況下不強制執(zhí)行范圍限制規(guī)則。在之前的版本中,for循環(huán)中變量的生命期將會延續(xù)到循環(huán)之外,為與標準兼容,for循環(huán)中定義的變量,現(xiàn)在只限定在for循環(huán)內(nèi)使用。

wchar_t類型

現(xiàn)在,wchar_t已為默認內(nèi)置類型。這就是說,也許在以前,wchar_t可能會被當作一個unsigned short,因為它還不是內(nèi)置類型,所以,當與那些有wchar_t類型變量的文件作符號比較時,很可能會導致問題。在Visual C++ 2005中,wchar_t已是一個內(nèi)置類型,也就是說,需要確定以前對wchar_t的用法不會導致轉(zhuǎn)譯為一個unsigned short。

異常處理

為了與庫的變化保持一致,編譯器已作了一些修改,以便不會捕捉到結構化異常。所以,為與以前代碼保持兼容,還是應該使用/EHa。

參數(shù)屬性

為了提供更健壯的屬性--也是為了代碼的健壯性,編譯器現(xiàn)在將會檢查類型、枚舉等等的屬性。這意味著,以前的代碼可能會在屬性方面碰到一個從未有過的編譯器錯誤。

默認為int

為遵循C++標準,對沒有類型聲明的變量或函數(shù),已不再默認為int類型。但在C語言中仍然可以,C++語言中已不行。這甚至也影響到了微軟公司自身的代碼,包括NT系統(tǒng)的代碼,所以***的方式,還是顯式聲明。

關于C的托管代碼

C語言編譯器一般不可能創(chuàng)建CLR的托管代碼,因為C語言不是面向?qū)ο蟮模环螩LR所使用的模型,因此,任何以C語言來編譯的代碼都會與CLR編譯器設置沖突。例如,如果在編譯時使用/TC設置,而且又設置了CLR,就會導致沖突。

面向CLR的新語法

通過設置/clr編譯選項,C++編譯器只接受新語法。這將強制推廣加入到Visual C++ 2005中的新語法,同時,也會廢棄掉老代碼。

安全檢查

在安全越來越得到重視的今天,安全檢查選項/GS,在默認情況下就是打開的,還是有一定道理的。在Visual C++ Visual Stuio 2005編譯器中,默認情況下將會使用/GS選項。

責任編輯:chenqingxiang 來源: 小草之談
相關推薦

2010-01-13 14:35:10

Visual C++

2009-12-11 09:42:00

Visual Stud

2009-01-12 10:16:11

Visual C++編譯器選項設置

2010-01-15 16:37:28

Visual C++

2013-12-10 10:53:47

shellcode

2010-03-26 16:23:07

Visual Stud

2021-10-09 12:08:23

Facebook編譯器機器學習

2023-12-07 19:19:21

C++模板代碼

2009-12-09 16:06:05

Visual Stud

2010-01-08 16:00:46

C++編譯器

2010-03-23 11:17:16

Python 動態(tài)編譯

2010-10-20 13:43:37

C++編譯器

2009-12-17 15:38:21

Visual Stud

2022-05-18 09:31:42

編譯器開源代碼生成

2009-11-05 13:47:28

Visual Stud

2009-12-04 14:40:43

Visual Stud

2009-12-16 15:53:34

Visual Stud

2009-12-10 13:47:06

VS2005應用程序

2010-01-18 10:34:21

C++編譯器

2010-01-12 16:42:59

C++編譯器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91.com在线观看 | 九九免费视频 | 久久久久亚洲精品国产 | 99在线精品视频 | 欧美成人精品一区 | 国产激情精品一区二区三区 | 一区二区三区国产 | 男女免费观看在线爽爽爽视频 | 日韩一区二区在线免费观看 | 麻豆精品一区二区三区在线观看 | 欧美激情免费在线 | 中文字幕av亚洲精品一部二部 | 四季久久免费一区二区三区四区 | 夜夜骑首页 | 一区二区欧美在线 | 青青草中文字幕 | 怡红院免费的全部视频 | 国产精品久久久久久久久久久免费看 | 九九热久久免费视频 | 国产精品一区二区免费看 | 亚洲免费三区 | 久久一区二区视频 | 在线免费观看a级片 | 久久精品国产久精国产 | 黑人成人网 | 99在线免费观看视频 | 日本午夜网站 | 5060网一级毛片 | av黄色免费在线观看 | 最新国产在线 | 国产精品黄 | av中文字幕在线 | 亚洲色在线视频 | 91不卡 | 午夜视频在线观看一区二区 | 色婷婷综合网站 | 完全免费av在线 | 国产精品1区 | 青青草av | 亚欧精品一区 | 精品一区二区三区四区五区 |