|
我還在上學(xué)的時(shí)候,我選擇了C++,最初我用VC6作為我的IDE,我看過(guò)很多本C++的教材,有的適合我,有的不適合我,其中有一本叫《VisualC++2005入門經(jīng)典》的書幫了我不少的忙。因?yàn)橥ǔ5腃++教材都只會(huì)介紹C++的語(yǔ)法什么的,很少會(huì)告訴我們?nèi)绾稳ゾ幾g、運(yùn)行,告訴我們什么是控制臺(tái)程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的區(qū)別是什么,F(xiàn)在有很多的朋友應(yīng)該也有這些問(wèn)題吧?
學(xué)C++用C++也有幾年了,算不上熟悉,算是初窺門徑吧,我想我應(yīng)該做點(diǎn)什么幫助一下那些和曾經(jīng)的我一樣困惑的朋友, 特別是學(xué)生朋友, 告訴他們他們所困惑的問(wèn)題的答案。記得我學(xué)C++的時(shí)候,沒(méi)有人教,有的時(shí)候也走了不少?gòu)澛罚踔吝B調(diào)試也不會(huì),也不知道可以通過(guò)看調(diào)用堆棧看調(diào)用次序, 還自己慢慢的去搜索,好傻啊。
接下來(lái)我會(huì)做一個(gè)《VisualC++2010入門教程》系列,用來(lái)幫助初學(xué)者。剛開(kāi)始學(xué)的時(shí)候是很痛苦的,這個(gè)我深有體會(huì),特別是身邊還沒(méi)有人能夠指導(dǎo)一二的。內(nèi)容主要涵蓋在Windows下面使用C++進(jìn)行開(kāi)發(fā)的常見(jiàn)內(nèi)容,VisualStudio2010的使用,如何創(chuàng)建新項(xiàng)目,如何調(diào)試,如果配置項(xiàng)目屬性等等,另外還會(huì)介紹VisualC++2010中新加入的一些內(nèi)容,包括一些新的STL組建,一些新的語(yǔ)法支持等等 。
由于本人水平有限,其中難免有錯(cuò)誤,希望大家諒解,如果大家有發(fā)現(xiàn)問(wèn)題還請(qǐng)務(wù)必及時(shí)指出來(lái),否則誤導(dǎo)了他人我就罪不容恕了。
注意,本教程非 C++教程,不會(huì)教你C++,只會(huì)教你如何使用 Visual C++ 2010 去練習(xí)去學(xué)習(xí)其它 C++教材上面的程序。因此建議大家認(rèn)真的去看其他的 C++教程,在使用 Visual C++ 2010 實(shí)踐的時(shí)候如果遇到問(wèn)題可以到這里來(lái)參考。推薦《C++Primer》、《C++程序設(shè)計(jì)語(yǔ)言》《Visual C++ 2008入門經(jīng)典》。
第一章: 關(guān)于 Visual Studio、VC 和 C++的那些事
首先,這三個(gè)東西有什么區(qū)別呢?VC 和 C++是相同的嗎,有什么區(qū)別呢?我剛開(kāi)始學(xué) C++的時(shí)候也有這樣的問(wèn)題,在這里我來(lái)替大家解釋一下他們到底是什么。
Visual Studio,我們一般都簡(jiǎn)稱為 VS,VC 全稱是 Visual C++,C++就不用解釋了吧?Visual Studio 其實(shí)是微軟開(kāi)發(fā)的一套工具集,它由各種各樣的工具組成,這就好像 Office 2007 是由 Word 2007、Excel 2007、Access2007 等等組成的一個(gè)道理。其中 Visual C++就是 Visual Studio 的一個(gè)重要的組成部分。Visual Studio 可以用于生成 Web 應(yīng)用程序,也可以生成桌面應(yīng)用程序,在 Visual Studio 下面,除了 VC,還有 Visual C#,Visual Basic,過(guò)去還有 Visual J#,現(xiàn)在還有 Visual F#等等組件工具,使用這些工具你可以使用 C++語(yǔ)言、C#語(yǔ)言或者 Basic 語(yǔ)言(微軟改進(jìn)版)進(jìn)行開(kāi)發(fā)。這就好比桌上放著刀、叉、筷子,你可以用它們來(lái)吃飯,無(wú)論你用什么工具都可以,因?yàn)樗鼈兌际遣途叩囊环N。
VC,全稱是 Visual C++,它只是一個(gè)工具而已。C++是一門和 C、Basic、C#、Java 一個(gè)概念的東西,它是一門語(yǔ)言,這個(gè)概念就同漢語(yǔ)、英語(yǔ)、法語(yǔ)之間的關(guān)系一樣。語(yǔ)言可以不同,他們有的復(fù)雜有的精簡(jiǎn),比如漢語(yǔ),我個(gè)人認(rèn)為這是這個(gè)星球上最復(fù)雜的語(yǔ)言;又比如電影《阿凡達(dá)》中外星人使用的語(yǔ)言,不過(guò) 100 多個(gè)單詞而已。當(dāng)然,語(yǔ)言并沒(méi)有高低貴賤之分,而對(duì)語(yǔ)言掌握的好不好,說(shuō)的好不好是有高下之別的。
一個(gè)語(yǔ)言都有哪些要素呢?語(yǔ)法就是其中一個(gè)重要的方面,比如你要對(duì)你所喜歡的人表達(dá)愛(ài)慕之情,那么你應(yīng)該說(shuō)“我愛(ài)你”,你不能說(shuō)“你愛(ài)我”,因?yàn)檫@搞錯(cuò)了主謂賓關(guān)系,因此我們通常都需要按照一定的規(guī)矩和原則表達(dá)才會(huì)讓別人正確理解我們真正的含義。在我們的漢語(yǔ)中有一些成語(yǔ),它們通常都比較簡(jiǎn)單短小,但是卻能表達(dá)非常強(qiáng)烈的感情,而且效果非常好。比如你想罵一個(gè)壞人“你實(shí)在是太變態(tài)了,這種事情都干得出來(lái)!蹦憧梢赃@樣說(shuō):“你也太禽獸不如了!”對(duì)于編程的語(yǔ)言來(lái)說(shuō),其實(shí)也是有成語(yǔ)的,在我看來(lái),這就是庫(kù)函數(shù)。通常我們?cè)诰幊痰臅r(shí)候都推薦選擇庫(kù)函數(shù),因?yàn)樗ǔ?huì)比較快一些。
一直以來(lái)都有不少人混淆 Visual C++和 Visual Studio,其實(shí)最初Visual C++發(fā)布的時(shí)候還沒(méi)有 Visual Studio 這個(gè)東西,Visual C++是一個(gè)獨(dú)立的開(kāi)發(fā)工具,與 Visual Basic 等并列,最后微軟將它們整合在一起組成了 VisualStudio。Visual C++從發(fā)布起到現(xiàn)在已經(jīng)有 10 個(gè)大版本了,我們這里介紹的Visual C++ 2010 就是 Visual C++ 10,簡(jiǎn)稱 VC10。上朔 10 多年,Visual C++ 6.0發(fā)布了,這個(gè)被稱為史上最經(jīng)典的 VC,現(xiàn)在有很多企業(yè)還在用它,大量的教材基于這個(gè)版本的 VC 來(lái)寫的。然而實(shí)際上 VC6 并沒(méi)有想象中的那么美好,孱弱的IDE,不完善的 STL 等等讓它越來(lái)越不適應(yīng)時(shí)代的發(fā)展,同時(shí)由于后來(lái)的版本和百度文庫(kù)它的差別越來(lái)越大,讓很多習(xí)慣于 VC6 教材的人在新版本上無(wú)所適從。VC6 走向歷史的終結(jié)點(diǎn)其實(shí)是必然的,只在于時(shí)間問(wèn)題罷了,況且大部分人都有追求最新的“嗜好”,所以這里也選擇最新版的 VC 來(lái)做入門教程。
0.png (219.79 KB, 下載次數(shù): 50)
下載附件
2018-8-28 14:36 上傳
第二章 安裝、配置和首次使用 VS2010
本章將幫助大家安裝 Visual C++ 2010,幫助大家做一些常見(jiàn)的配置,以及第一次使用它來(lái)寫 HelloWord 程序。
安裝
Visual C++ 2010 是屬于 Visual Studio 2010 的一部分,這個(gè)在前一章中已經(jīng)講解過(guò),實(shí)際上 Visual C++ 2010 也有更多的子版本,正如 Windows7 有旗艦版、家庭高級(jí)版、家庭初級(jí)版一樣。在上一章的下載地址中有兩個(gè)版本可以選擇,我選擇的時(shí)候旗艦版,這個(gè)功能最全面。
如果你下載完畢了,應(yīng)該有一個(gè) ISO 鏡像文件,如果你是從我給的地址下載的,那么那個(gè)序列號(hào)已經(jīng)被 替換成正版序列號(hào),直接安裝即可。下面是 ISO 文件截圖:
0.jpg (33.06 KB, 下載次數(shù): 59)
下載附件
2018-8-28 14:38 上傳
以下內(nèi)容來(lái)自節(jié)選:
0.jpg (49.89 KB, 下載次數(shù): 75)
下載附件
2018-8-28 14:38 上傳
這時(shí)候我們會(huì)遇到編譯錯(cuò)誤,為什么呢?因?yàn)槲覀冞沒(méi)有 Main 函數(shù),對(duì)于一個(gè) C++項(xiàng)目來(lái)說(shuō),一定要有一個(gè)且僅有一個(gè) main 函數(shù)(Windows 程序需要 WinMain,區(qū)別以后再講),可以是隱式提供也可以是顯式提供,至于區(qū)別以后會(huì)講到。現(xiàn)在讓我們記住這個(gè)錯(cuò)誤,以后遇到這個(gè)錯(cuò)誤的時(shí)候一定要想想,我們項(xiàng)目中是否有 Main 函數(shù)。注意這時(shí)候即使你托一個(gè)有 Main 函數(shù)的文件到 VC10 中進(jìn)行編譯也是沒(méi)有意義的,因?yàn)槟莻(gè)文件并不是我們項(xiàng)目的一部分。
現(xiàn)在我們可以添加一個(gè)代碼文件進(jìn)來(lái)了,這個(gè)代碼文件可以是已經(jīng)存在的也可以是新建的,這里新建一個(gè)。右鍵單擊項(xiàng)目名稱,選擇添加,新建項(xiàng):
0.jpg (67.1 KB, 下載次數(shù): 65)
下載附件
2018-8-28 14:40 上傳
兩個(gè)選項(xiàng)卡,局部變量和自動(dòng)變量,它們都負(fù)責(zé)顯示一些當(dāng)前斷住狀態(tài)下的變量的值,注意,這些只有在程序中斷的時(shí)候才有意義。自動(dòng)變量選項(xiàng)卡并非指 auto 變量,而是指 VS幫我們猜想我們可能感興趣的一些變量的值,或者函數(shù)返回值,而局部變量基本上就是本過(guò)程的一些變量的值了。
注意,這些選項(xiàng)卡不僅僅可以用于查看,甚至可以用于你臨時(shí)修改它們的值,方法就是雙擊值就可以了,如下圖所示:
0.jpg (49.16 KB, 下載次數(shù): 53)
下載附件
2018-8-28 14:40 上傳
這里我檢查了當(dāng)前語(yǔ)言字符串的設(shè)置。注意并非什么變量都可以檢視,必須是調(diào)試器可以為我們推斷出來(lái)的才行,即調(diào)試器知道它的地址是什么。如上圖所示有一個(gè)特殊的用法$err,hr 這個(gè)是 VS 特別的,它的意義相當(dāng)于讓調(diào)試器幫你獲取 GetLastError 的值,這在Windows 編程的時(shí)候非常有用。
對(duì)于一些指針類型的變量我們還可以在監(jiān)視里面對(duì)它做強(qiáng)制轉(zhuǎn)型,比如你的函數(shù)傳遞一個(gè) void* p 進(jìn)來(lái),但是你知道這次你傳遞的是一個(gè) Data 結(jié)構(gòu)體的指針,而調(diào)試器是無(wú)法知道這個(gè) p 指向的是 Data,所以你可以在監(jiān)視中輸入(Data*)p。這樣調(diào)試器會(huì)自動(dòng)幫我們把他當(dāng)做 Data 結(jié)構(gòu)體的指針來(lái)識(shí)別。
調(diào)用堆棧
調(diào)試過(guò)程中調(diào)用堆棧實(shí)在是太重要了,因?yàn)樗赋隽四愕某绦蚴钦谔幱谑裁礌顟B(tài),是誰(shuí)調(diào)用了誰(shuí):
當(dāng)我們的程序失去響應(yīng)的時(shí)候我們不妨嘗試點(diǎn)擊調(diào)試窗口上面的暫停按鈕:如果中斷(暫停)成功那么我們會(huì)看到死鎖或者死循環(huán)的調(diào)用堆棧了。
斷言(assert)
assert 大家應(yīng)該很熟悉了吧,這是最直接提供錯(cuò)誤信息的方法了。特別的,當(dāng)我們?cè)谡{(diào)試的時(shí)候,調(diào)試器會(huì)幫助我們定位到斷言觸發(fā)的地方。
暫時(shí)就想到這么多,如果您還有其它好 Case,一定不要忘了要同大家分享。
轉(zhuǎn)眼間畢業(yè)一年了,感觸良多。每當(dāng)我情緒低落的時(shí)候,我就看蘇珊大媽的視頻,因?yàn)樘K珊大媽是我的偶像,因?yàn)樗嬖V我有夢(mèng)想就一定要堅(jiān)持,當(dāng)你具備了成功的基礎(chǔ)的時(shí)候,夢(mèng)想就會(huì)慢慢的實(shí)現(xiàn)。
完整的pdf格式文檔51黑下載地址(共73頁(yè)):
Microsoft_Visual_Studio_C _2010入門教程(修訂版).pdf
(7.36 MB, 下載次數(shù): 43)
2018-8-28 10:46 上傳
點(diǎn)擊文件名下載附件
visual studio 下載積分: 黑幣 -5
|
|