版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
《VisualC++2010入門教程》第一章:關于VisualStudio.VC和C++的那些事首先,這三個東西有什么區(qū)別呢?VC和C++是相同的嗎,有什么區(qū)別呢?我剛開始學C++的時候也有這樣的問題,在這里我來替大家解釋一下他們到底是什么。VisualStudio,我們一般都簡稱為VS,VC全稱是VisualC++,C++就不用解釋了吧?VisualStudio其實是微軟開發(fā)的ー套工具集,它由各種各樣的工具組成,這就好像Office2007是由Word2007,Excel2007,Access2007等等組成的一個道理。其中VisualC++就是VisualStudio的一個重要的組成部分。VisualStudio可以用于生成Web應用程序,也可以生成桌面應用程序,在VisualStudio下面,除了VC,還有VisualC#,VisualBasic,過去還有VisualJ#,現(xiàn)在還有VisualF#等等組件工具,使用這些工具你可以使用C++語言,C#語言或者Basic語言(微軟改進版)進行開發(fā)。這就好比桌上放著刀,叉,筷子,你可以用它們來吃飯,無論你用什么工具都可以,因為它們都是餐具的ー種。VC,全稱是VisualC++,它只是ー個工具而已。C++是ー門和C,Basic,C#,Javaー個概念的東西,它是ー門語言,這個概念就同漢語,英語,法語之間的關系ー樣。語言的可以不同,他們有的復雜有的精簡,比如漢語,我個人認為這是這個星球上最復雜的語言;又比如電影《阿凡達》中外星人使用的語言,不過100都個單詞而已。當然,語言并沒有高低貴賤之分,而對語言掌握的好不好,說的好不好是有高下之別的。ー個語言都有哪些要素呢?語法就是其中一個重要的方面,比如你要對你所喜歡的人表達愛慕之情,那么你應該說“我愛你”,你不能說“你愛我”,因為這搞錯了主謂賓關系,因此我們通常都需要按照一定的規(guī)矩和原則表達オ會讓別人正確理解我們真正的含義。在我們的漢語中有一些成語,它們通常都比較簡單短小,但是卻能表達非常強烈的感情,而且效果非常好。比如你想罵ー個壞人“你實在是太變態(tài)了,這種事情都干得出來?!蹦憧梢赃@樣說:“你也太禽獸不如了!”對于編程的語言來說,其實也是有成語的,在我看來,這就是庫函數(shù)。通常我們在編程的時候都推薦選擇庫函數(shù),因為它通常會比較快ー些。一直以來都有不少人混淆VisualC++和VisualStudio,其實最初VisualC++發(fā)布的時候還沒有VisualStudio這個東西,VisualC++是ー個獨立的開發(fā)工具,與VisualBasic等并列,最后微軟將它們整合在ー起組成了VisualStudio?VisualC++從發(fā)布起到現(xiàn)在已經(jīng)有10個大版本了,我們這里介紹的VisualC++2010就是VisualC++10,簡稱VC10。上朔10多年,VisualC++6.0發(fā)布了,這個被稱為史上最經(jīng)典的VC,現(xiàn)在有很多企業(yè)還在用它,大量的教材基于這個版本的VC來寫的。然而實際上VC6并沒有想象中的那么美好,孱弱的IDE,不完善的STL等等讓它越來越不適應時代的發(fā)展,同時由于后來的版本和它的差別越來越大,讓很多習慣于VC6教材的人在新版本上無所適從。VC6走向歷史的終結點其實是必然的,只在于時間問題罷了,況且大部分人都有追求最新的“嗜好”,所以這里也選擇最新版的VC來做入門教程。ド面來介紹下這個VC版本和VS版本的對應關系:VisualS(2002)—>VisualC++.net(2002)—>VisualC++7.0->_MSC_VER值1300這個是微軟推出.net戰(zhàn)略之后的最早的ー個版本的VC,這個版本相對VC6來說變化并不是很大,ー些不標準的語法依然得到支持,不過IDE界面已經(jīng)出現(xiàn)了VS時代的雛形。VisualS2003->VisualC++.net2003->VisualC++7.1->_MSC_VER值1310這個版本我覺得只能算是ー個對.net2002的一個Patch版本,解決了一些Bug,不規(guī)范的語法依然得到支持,比如for循環(huán)變量作用域的問題。VisualStudio2005->VisualC++2005->VisualC++8.0->_MSC_VER1400這個版本算是ー個比較符合C++標準的VC版本了,微軟為這個版本的VC加入了大量的增強版的C庫函數(shù)(CRT函數(shù)),如strcpy_s之類,當然,這部分并不是C和C++標準所要求的。VisualStudio2008->VisualC++2008->VisualC++9.0->_MSC_VER1500這個版本應該是在Vista發(fā)布之后出的,如果你是在Vista或者Win7下面使用,那么應該選擇這個版本。這個版本與VC2005變化并不大,不過它的SP!為C++帶來ー些新的STL庫組件(tri部分),以及MFC下面的Ribbon界面。VisualStudio2010->VisualC++2010->VisualC++10.0->.MSC_VER值160〇.Microsoft本程序野美舉0這個是VisualStudio2010中文旗艦版的啟動畫面。下一章中,我將教大家安裝、配置VS2010/VC2010,以及如何使用它來創(chuàng)建第一個C++程序。如果你沒有下載過VisualStudio2010的話,那么請你提前下載好它吧:http://hi,/%E2d%B7%B3%DE%B2%C2%D2/b1og/item/bb0975dd801291d58c1029f5.html第二章安裝、配置和首次使用VS2010本章將幫助大家安裝VisualC++2010,幫助大家做一些常見的配置,以及第一次使用它來寫HelloWord程序。安裝VisualC++2010是屬于VisualStudio2010的一部分,這個在前一章中已經(jīng)講解過,實際上VisualC++2010也有更多的子版本,正如Windowsア有旗艦版、家庭高級版、家庭初級版ー樣。在上一章的下載地址中有兩個版本可以選擇,我選擇的時候旗艦版,這個功能最全面。如果你下載完畢了,應該有一個ISO鏡像文件,如果你是從我給的地址下載的,那么那個序列號已經(jīng)被替換成正版序列號,直接安裝即可。下面是ISO文件截圖:共享▼ 刻錄 新建文件夾cn_visual_studio_2010_ultimate_x86_dvd_532347.isoWinRARSSg文件這就是光盤鏡像文件,我們有多種方式可以安裝它,你可以把它燒錄成光盤,也可以用虛擬光驅(qū)軟件安裝它,由于這個ISO已經(jīng)被修改過了,你甚至可以直接解壓它,然后運行里面的setup.exe進行安裝。這里我使用虛擬光驅(qū)進行說明,首先我假設你已經(jīng)安裝好了虛擬光驅(qū)軟件DAEMONToolsLite,如果你還沒有安裝,請去游俠補丁網(wǎng)下載,因為在那里你總是能找到最新的免費版本。接下來我們通過虛擬光驅(qū)加載剛オ下載好的ISO鏡像:
設備信息...設備參數(shù)...移除驅(qū)訪器£0缶4a添カ慚的SCS!模扌以驅(qū)動器?幫助@退出設備信息設備參數(shù)... 噂移除驅(qū)動器動慚的SCSI模擬驅(qū)動器設備信息...設備參數(shù)...移除驅(qū)訪器£0缶4a添カ慚的SCS!模扌以驅(qū)動器?幫助@退出設備信息設備參數(shù)... 噂移除驅(qū)動器動慚的SCSI模擬驅(qū)動器VOZ3V。〇幫助?退出在彈出的対話框中選擇我們卜我好的ISO文件。這個時候,虛擬光駆里而已經(jīng)替我們打開了ISO文件,有的機器可能會自動彈出安裝提示,有的不會。如果自動彈出安裝提示,那么直接通過即可,如果沒有彈出,那么用資源管理器方式進入虛擬光驅(qū)點擊Setup.exe即可開始安裝。
山于我已經(jīng)安裝好了VS201〇,所以接下來無法給大家截圖了,我就直接用文字描述吧。當彈出VS2010安裝程序之后點下ー步,然后我們可能會看到完全最小自定義這樣的選項,我推薦大家選擇自定義,因為只有這樣我們オ可以自定我們安裝的目錄。接下來會選擇安裝的組件。這個時候我們會看到大量的VS2010的組件,這里我們可以選擇是否安裝Basic是否安裝C#等等,我在網(wǎng)上找到ー些圖片,雖然跟中文版2010不一樣,大家大概的樣子是ー樣的,大家就湊合著看看吧。下面是開始的界面,我們應該選擇安裝VS2010.上面這個時候選擇同意。然后安裝包會開始搜集信息:選擇目錄:Thisoptioninstallsall&thefeaturesavailablefortheproduct.391GB 154GBThisoptioninstallsall&thefeaturesavailablefortheproduct.391GB 154GB391GB 212GB709GB 1G2G8Requied Remwmg54GB 99GBOWet 232GB0bytes 16.2G8licrosoftVisualStudio2010UltimateBeta2Setup-OptionsPaceUO!VisualStudia2010UltimateSetupSelectfeaturestoinstall: FeaUredesalpbon:CompleteVmMlStudorKtalatoonInttdlalprograrrmnglanguage:andloobOCystomSelectwhchptogramranglanguage)andloobtoimialonthenejtfpagePtoductnstalpMh:C\Progr?nFiesXMerowftVnualStu^o100\ ]Bio^te|Diskspacerequrecnents:F《PreviousIレ!向&IIC4ncd然后就是開始安裝了,注意安裝的時候可能需要帀啟ー兩次。最后安裝成功:。行。行図RklicrosoftVisualStudio2010UltisateBeta2Setup-FinishPage〇〇VisualStudio2010UltimateSetupSuccessOTherewereerrorsdunngsetup.Althoughthecomponentswereinstalledsuccessfulty,someerrorsweredetected.ViewErrorLogTroubleshootingTipsForinformabononknownsetupissues,seeMicrosoftVisualStudioreadmefile,readme.htmlocatedattherootoftheinstallationsourcesVisitMicrosoftHelpandSupportsiteforKnowledgeBasearbclesontroubleshoobngthemstaHabonofVisualStudio2010.TofindHelpfromotherVisualStudioUsers,trythefollowingnewsgroups:oVisualStudioSetupoMicrosoftProductSupportFordetailsaboutthissetupfailure,seethesetuplogfile.配置當安裝成功之后,我們就可以開始使用了,這里我先教大家做?些常見的配置,當然大家也可以直接用默認的設置,我這樣配置主要是為了方便。下面通過開始菜單來啟動VS2010吧:KMPlayerMicrosoftDeveloperNetworkMicrosoftDirectXSDK(February20MicrosoftDirectXSDK(February20:MicrosoftOfficeMicrosoftSilverlight3SDK?中文(簡MicrosoftVisualStudio.NET2003MicrosoftVisualStudio2005MicrosoftVisualStudio2008MicrosoftVisualStudio2010巻MicrosoftVisualStudio2010文8MicrosoftVisualStudio2010 ーーーー 一一一1④Microsoft測試告理器2010MicrosoftWindowsSDKToolsTeamFoundationServerToolsVisualStudioToolsMicrosoftWindowsSDKv6.0ANVIDIACorporationPPStreamQuickTimeSharePoint』StarUMLUltralSO1 返回搜索程序和文件 0如果你是第一次開始,那么可能會讓你選擇默認的環(huán)境設置,我們要使用VC當然選擇VC的配置:%VisualBasic開發(fā)設§法VisualC#開發(fā)設置CVisualC++開發(fā)設置1%VisualF#開發(fā)設置IヌWeb幵發(fā)IもWeb開發(fā)(僅代碼)Iス常規(guī)開西SBIあ項目肯理設置出現(xiàn)下面的畫面表示已經(jīng)成功安裝和運行了。這是起始頁面,以后你會經(jīng)常見到它。注意,你可能會沒有VAssistX這個菜單,因為這個是個外部工具,以后會給大家解釋它的用處,現(xiàn)在暫時忽略。接下來讓我們來做一些常見的設置。通過菜單工具》選項調(diào)出配置對話框,下面是ー些常見的設置:調(diào)處行號,選擇文本編輯器,所有語言,把行號打成勾。
如果你想調(diào)整字體或者顏色,那么可以在這里選擇:單擊工具欄的空白區(qū)域,讓我們把生成工具欄調(diào)出來:HTML源編集IntelliTracei.MicrosoftOfficeExcelMicrosoftOfficeWordRibbonSourceControl-SubversionTransact-SQし編拳器マVisualAssistX后 Web瀏覽器Webー鍵式發(fā)布己 XML編輯器報表S 報表邊框? 報表格式八,缶E 表設計器式 布局定向關系圖だ落権的器格式設置ェ悌則否菊視圉設計器這樣我們就可以直接在工具欄上面選擇編譯項目、編譯整個解決方案、運行程序和調(diào)試程序了。選擇生成工具欄旁邊的小三角形可以自定,我們還可以添加一些按鈕:
單擊自定義界面下面的添加按鈕就可以添加新的按鈕了,現(xiàn)在我們把開始執(zhí)行(不調(diào)試)添加工具欄中:
ill為?6,aill為?6,a?奨?導添加命令類別(G):5Jd£數(shù)據(jù)庫關系圖體系結構聯(lián)圖像團隊タ演程^文件以前經(jīng)常有人問我為什么我的程序閃一下就沒了,這就是因為它們把調(diào)試(F5,那個實心的三角形)當成了運行(不調(diào)試,Ctrl+F5,空心帶尾巴的三角形)了。當然是ー閃而過啦。關于調(diào)試以后說到。HelloWorld.下面讓我們用VC++2010也就是VC10來做ー個控制臺的HelloWorld程序吧。VC2010里面不能單獨編譯ー個.cpp或者ー個.c文件,這些文件必須依賴于某ー個項EI,因此我們必須創(chuàng)建一個項目。有很多種方法都可以創(chuàng)建項ロ,可以通過菜單:文件,
新建,項目;也可以通過工具欄點擊新建項目進行創(chuàng)建。這里我們點擊起始頁面上面的新建項ロ:MidjMoh*wOVisualStudio,2010旗艦版逹接到TeamFoundationServer新建項目..打幵項目...最近使用的項目點擊之后進入新建項目向?qū)??臼Windows 亨CLR的臺歯制CLR秋目名稱史): 〈城入名稱》位4): e:\documents\visual studio 2010\Projects幀決方案名稱(M): <蝠入名稱》VisualC++VisualC++VisualC++VisualC++VisualC++?瀏...Mカ解決方実創(chuàng)建目錄⑼AddtoSubversionI.NETFramework4 ▼回靜依秀:獣認值Win32控制臺應用程序MFCWin32項目VisualC++VisualC++VisualC++=空項目 VisualC++復室歩裝的模板 類型:VisualC+?臼Windows 亨CLR的臺歯制CLR秋目名稱史): 〈城入名稱》位4): e:\documents\visual studio 2010\Projects幀決方案名稱(M): <蝠入名稱》VisualC++VisualC++VisualC++VisualC++VisualC++?瀏...Mカ解決方実創(chuàng)建目錄⑼AddtoSubversionI.NETFramework4 ▼回靜依秀:獣認值Win32控制臺應用程序MFCWin32項目VisualC++VisualC++VisualC++=空項目 VisualC++復室歩裝的模板 類型:VisualC++用テ創(chuàng)蠶Win32控制臺應用程序的項目已安裝的橫板VisualC++新建項目扈單晶五F1Win32控制令應用程序MFCWin32項目ATL項目MFCDLLWindowsCLR控制臺應用程序CLR5項目VisualC++VisualC++VisualC++三VisualC++VisualC++VisualC++VisualC++VisualC++VisualC++▼類型:VisualC++用チ創(chuàng)建Win32Win32控制令應用程序MFCWin32項目ATL項目MFCDLLWindowsCLR控制臺應用程序CLR5項目VisualC++VisualC++VisualC++三VisualC++VisualC++VisualC++VisualC++VisualC++VisualC++▼類型:VisualC++用チ創(chuàng)建Win32控制臺應用程序的項目名稱の: HelloWorld(^K(D: e:\documents\visual studio 2010\Projects帳決方案名稱(M: HelloWorld,為解決方実創(chuàng)建目錄)AddtoSubversion已安裝的模板虹已安裝的模板星ATLCLR常規(guī)MFC如Win32其他語毒其他項目獎也t故值座建模項目目.NETFramework4 排序依森:默認值一目接下來進入創(chuàng)建頁面,在Win32.NETFramework4 排序依森:默認值一目下個頁面記得選擇空項目,我們不需要預編譯頭:點擊完成。這時候一個空的項目編譯成功了,我們不妨編譯ー些試試。點擊剛オ添加的生成工具欄的生成按鈕::?國占え?;Q
這時候我們會遇到編譯錯誤,為什么呢?因為我們還沒有Main函數(shù),對于ー個C++項H來說,一定要有一個且僅有一個main函數(shù)(Windows程序需要WinMain,區(qū)別以后再講),可以是隱式提供也可以是顯式提供,至于區(qū)別以后會講到?,F(xiàn)在讓我們記住這個錯誤,以后遇到這個錯誤的時候一定要想想,我們項目中是否有Main函數(shù)。注意這時候即使你托ー個有Main函數(shù)的文件到VC1O中進行編譯也是沒有意義的,因為那個文件并不是我們項目的ー部分。
現(xiàn)在我們可以添加一個代碼文件進來了,這個代碼文件可以是ー經(jīng)存在的也可以是新建的,這里新建一?個。右鍵單擊項目名稱,選擇添加,新建項:?大ZJ關R跟3旺3s嘔IぶI教守矯決方案"HelloWorld”(1個項目)/HelloWorld曲j外自萌生成(U)口石 重新生成(E)っが 艇(N)コ53 僅用于項目(J)計算代碼度量值(Q技配置優(yōu)化(P)生成自定義(B)...添加(D)引用(日…陽類向?qū)Б啤?國新刎(W)“. Ctrl+Shif司現(xiàn)有項(G).. Shift+Alt,國新刎(W)“. Ctrl+Shif司現(xiàn)有項(G).. Shift+AltCtrl+Shift+Xユ新建鐸造器(F)設カ啟動項目(J)吸G)I3AddSolutiontoSubversion...う劎(R)在向?qū)е羞x擇代碼、C++文件(.cpp),名稱輸入Main,う劎(R)添カ慚項HeUoWorld已安裝的模板/VisualC++U1sag鹹Web鋼1M屬性表ョ兇國匐母劉麻値 ?]ズ國C++文儂.cpp)[痩案已安裝的橫板VisualC++迎:VisualC++創(chuàng)M包含C++源代眄的文件雙做h)VisualC++Mid(文件(.idl)假塊定義文件(def)VisualC++VisualC++VisualC++VisualC++名稱國):名稱國):<2B(L):Maine:\documents\visualstudio2010\Projects\HelloWorld\HelIoWorld\這時候已經(jīng)成功添加了一個Main文件,注意添加新文件的時候要防止重名:然后我們輸入最簡單的幾行代碼,然后編譯它吧,編譯方法和上面一樣。文件超項目()生成調(diào)試和エ貝①體系結構g掲試⑤)豕疝「也)聲助出)二上/厶-」; 當 二上/厶-」; 當 ゴ二ユ團ニコ>やゝれげか :, 啜.『,「二,」メ「カ二高セ皖決方案資強言理器 ▼Qxsoonマ解決方案個唄目)>メ外部依賬項ン頭文件,a實文件ダシ資源文件〇▼。つ和んHi站出旃⑸ ..二ジ京豆]己國生成項目以査=====二生成成功個,失股。個,最秋。個,澳過。個======■ft?2ABD?碗生成成功 行列字符如果編譯成功你會看到上面的畫面,如果失敗會有錯誤提示,那么你可以根據(jù)提示去修改項目配置或者代碼。然后讓我們用Ctrl+F5或者點那個空心三角形運行一下吧:
〇〇HelioWorld-MicrosoftVisualStudioOK了,接下來你可以通過更改這個程序去練習C++教材上面的程序了。這一章的內(nèi)容就是這么多了,下一章中我們將討論以下內(nèi)容:什么是C++?什么是編程等等。第三章關于C++的ー些問題這一回我自己都不知道應該寫點什么好,或許今天的篇幅會比往常短很多。我說過,這不是C++的教程,因為我還沒有那個能力來教大家C++,我能做的,是分享一些學習的經(jīng)驗,以及教新手如何使用VC2010這個工具去練習和實踐其它C++教材上面的程序,如《C++Primer》等。今天說的是我學習和使用C++這些年來對C++的ー些理解,這樣的日志其實是最難寫的,因為眾口難調(diào),為什么這么說呢?同樣的一段音樂不同的人去傾聽都會有不同的感受,不同的心境去聽也會有不同的感覺。記得當年我在聽雅尼的《IfIcouldtellyou》聽到的是無盡的傷感和無奈,而我的朋友卻怎么也聽不出來,呵,你去聽聽之后會有什么感覺?好,回歸正題吧。什么是編程下面這段話我是從百度百科“編程”詞條復制過來的,不敢掠人之美:編程就是讓計算機為解決某個問題而使用某種程序設計語言編寫程序代碼,并最終得到結果的過程。為了使計算機能夠理解人的意圖,人類就必須要將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據(jù)人的指令一步ー步去工作,完成某種特定的任務。這種人和計算機之間交流的過程就是編程。這段話說的比較明白,我們?nèi)绻胱層嬎銠C按照我們想要的方式工作,那么我們必須給它命令,有的常見的任務已經(jīng)由操作系統(tǒng)幫助我們提供了,操作系統(tǒng)將一些簡單的指令封裝成一個簡單的操作,使得我們的操作更容易更簡單,然而操作系統(tǒng)提供的操作始終是有限的,如果耍擴展計算機的軟件系統(tǒng),就需要編程了。什么是編程語言如上所說,編程語言就是人類與計算機交流的橋梁。首先編程語言必須是計算機可以理解的或者是可以間接轉(zhuǎn)換成計算機可以理解的指令的東西。打個比方,如果你在一臺普通電腦面前站著,大叫道:“電腦,給哥把C盤根目錄下面的A文件拷貝到D盤根目錄下面去"。我猜想你就算叫上一天也沒用,因為普通的電腦無法識別你的指令,這就算是對“機”彈琴吧。什么是編譯器如上所說,編程語言是計算機可以直接理解的如機器碼或者可以間接轉(zhuǎn)換成計算機可以理解的指令的東西。那么C++就屬于后者,那么是什么把C++翻譯成計算機可以識別的指令的呢?這就是編譯器。什么是C++我不想說C++的歷史了,我想說,它是一門編程語言,它可以通過編譯器的翻譯成為計算機可以識別的指令。比如我們常見的C++代碼:inta=3+1;cout?a?endl;這翻譯成機器碼或者計算機可以理解的指令大概可以是這樣的:現(xiàn)在請為我準備ー個變量a,請用3+1的和去初始化它,然后請加它的值輸出到控制臺上并追加上一個空格。關于C++的更多東西,建議大家去看專門的C++教材或者維基百科、百度百科等相關詞條。學C++學的是什么?學C++學的是什么?可以說C++是很復雜的,因為要實現(xiàn)ー些在其它語言中很簡單的任務,在C++中通常都需要更多的代碼和時間,以創(chuàng)建一個窗口為例,其它語言由于有內(nèi)置的支持,甚至當我們創(chuàng)建一個HelloWorld程序時候就已經(jīng)創(chuàng)建了一個窗口。而在純粹的C++環(huán)境中,這是做不到的,因為C++并沒有提供GUI的內(nèi)置支持,如果要用C++創(chuàng)建窗口,我們需要使用到系統(tǒng)API或者使用封裝了這些API的ー些庫,前者如Win32程序設計后者如MFC、wxWidgets1,但是這些并不能代表C++不好,反而C++是很強大的,我們學習C++學得不僅僅是C++的語法,因為僅僅懂得C++的一些語法又能怎么樣呢?演示算法么?其實我認為學習C++的初期當然是熟悉C++的語法,中期當然是學習STL等庫、系統(tǒng)API以及熟悉C++的面向?qū)ο蟮乃枷牒鸵话愕脑O計方法;后期是伴隨著你C++生涯的一生的,因為它沒有終點的,這時候除了要繼續(xù)加深對C++的理解之外,還需耍去學習各種各樣的基于C++的庫,因為你需要在這些庫的幫助下使用C++去實現(xiàn)更具體的東西,比如一些GUI庫如QT、wxWidgets,一些游戲引擎如Ogre、Unreal、Bigworld等,一一些網(wǎng)絡庫如ASIO、RakNet、ACE等。這些庫大多有一個特點就是他們是基于C++,封裝了底層的API使得我們可以不必每次多去使用繁雜的API來實現(xiàn)我們想要的功能。當然,你也可以用C++去封裝這些API,讓自己成為ー個庫作者,方便他人。學習C++,學習C和C++的庫,學習其它各領域的C++庫,好好的使用這些庫或者自己寫ー些庫,其它ー些你能想到的與C++相關的事情。怎樣才能用C++來做事情通常我認為如果只使用最基本的C++以及其內(nèi)置庫來做事情,那么能做的事情始終是有局限的,因為C++的庫畢竟是有限的,我們能用它來寫ー些核心代碼,因為這部分代碼通常都不需要與具體的應用關聯(lián)起來。使用C++以及C++繼承的C庫我們能做一些簡單的文件操作,因此還可以寫一些與此相關的處理程序。其實不僅僅是C++,比如C#,加入你在應用中不引入.netFramework下面提供的大量的其它的類(指除了最基本的如System.Console等之外的類),你又能用C#做什么呢?我們在做C#的時候通常要引入ー些新的類,引用ー些新的命名空間,其實C++也是這樣的,要做更具體的事情,就需要除C++本身之外的更多東西才行。因此,要用C++來做事情,除了C++的基本語法之外,還需要學習ー些其它ー些內(nèi)容如WindowsAPI、MFC、DirectX3DAPI等。C++、C#、Java到底誰好?對于這個問題,我想說的是:語言無貴賤,技術有高低。其實無論什么語言,它們在這里都是編程語言,也許它們看起來不一樣,它們用起來也不一樣,它們的“翻譯”編譯器不一樣,但是它們的本質(zhì)作用就是要用它們自己的方式將我們?nèi)祟惖慕鉀Q問題的方法、思路和流程告知給計算機。這也就是為什么C++、C#、Java可以相互交互的原因。每個語言就像江湖上的各門派的武功一樣,其實真的沒有高下之分,只有個人的修為,少林武功就一定強于武當么?《碧血劍》中袁承志不也用普普通通的五行拳擊潰了榮彩么?只是不同的武功在不同的條件下表現(xiàn)不同,他們各自占據(jù)了自己有利的地位罷了,以楊家槍法為例,或許二人比武它不厲害,但是征戰(zhàn)沙場估計是再適合不過了。因此不要再糾結什么語言好,什么語言流行了,選擇ー個自己喜歡的方向,然后調(diào)査好那個方向最常用最適合的語言,然后集中注意力堅持的去學習它,這就好了。今天的內(nèi)容就是這些,希望對大家有幫助。請大家務必好好學習C++教材,并使用VC2010好好演練,最好能夠舉?反三自己創(chuàng)造問題自己解決!多看看百度知道C/C++下面的那些問題,每解決一個那樣的問題,你自己也會進步。第四章VC2010中初學者常見錯誤、警告和問題這一章將幫助大家解釋ー些常見的錯誤、警告和問題,幫助大家去理解和解決ー些常見問題,并了解它的根本原因。iostream.h與くiostream>下面的代碼為什么在VC2010下面.編譯不過去?#include<iostream.h>intmain()(coutくく"HelloWorld."?endl;return0;}錯誤信息:fatalerrorC1083:無法打開包括文件:"iostream.h":Nosuchfileordirectory造成這個錯誤的原因在于歷史原因,在過去C++98標準尚未訂立的時候,C++的標準輸入輸出流確實是定義在這個文件里面的,這是C風格的定義方法,隨著C++98標準的確定,iostream.h已經(jīng)被取消,至少在VC2010下面是這樣的,取而代之的是我們要用くiostream>頭文件來代替,你甚至可以認為くiostream>是這樣定義的:namespacestd(稈includeiostream,h)因此我們可以簡單的修改我們的HelloWorldo#include<iostream>usingnamespacestd;intmain(){coutくく"HelloWorld."?endl;return0;)iostream,h是屬于C++的頭文件,而非C的,因此標準訂立的時候被改成了<iostream>o而C的頭文件stdio.h等依然可以繼續(xù)使用,這是為了兼容C代碼。但是它們依然有對應的C++版本,如くcstdioXcstdlib>等。記住,在VC2010上面采用C++風格的頭文件而不是C風格的頭文件,除非你是在用C。warningC4996這是一個警告,請看下面的代碼:#include<iostream>usingnamespacestd;intmain()charsz[128]={0};strcpy(sz,"HelloWorld!");cout?sz<<endl;return0;)上面的strcpy會產(chǎn)生這個警告:warningC4996:'strcpy':Thisfunctionorvariablemaybeunsafe.Considerusingstrcpy_sinstead.Todisabledeprecation,use_CRT_SECURE_NO_WARNINGS.SeeonlinehelpfordetaiIs.這是因為VC從2005版本開始,微軟引入了一系列的安全加強的函數(shù)來增強CRT(C運行時),這里對應的是strcpy_So_s意為safe的意思,同樣的道理,strcat也是同樣。因此要解決這個問題,我們可以用strcpy_s來替換strcpy,但是注意strcpy_s并非所有編譯器都提供,因此如果要跨編譯器,請采用錯誤信息中所提示的方式,定義CRTSECURE_NOWARNINGS宏來掩耳盜鈴吧。另外注意并非所有的加強函數(shù)都是在屁股后面加一s,比如striemp這個字符串比較函數(shù)的增強版名字是—striemp。下面,用strcpy_s來更改程序:intmain()(charsz[128]={0};strcpy_s(sz,"HelloWorld!");cout?sz?endl;char*pSz2=newchar[128];strcpy_s(pSz2,128,“hello");cout?pSz2<<endl;deletepSz2;return0;)注意,strcpy_s有兩個版本,ー個可以幫助我們自動推斷緩沖區(qū)的大小,而另外ー個不能幫助我們推斷,因此在編譯器不能推斷緩沖區(qū)大小的時候,我們需要自己指定緩沖區(qū)的大小,如上面的程序所演示的那樣,關于增強版的函數(shù)請參考我寫的《深入學習C++String2.1版》〇TCHAR、wchar_t>char請大家看下面這個程序:#include<iostream>#include<Windows.h>#include<tchar.h>usingnamespacestd;intmain(){MessageBox(NULL,“你好HelloWorld!","Information",0);return0;}貌似沒什么問題吧?錯了,如果你是按照我教你的方法創(chuàng)建的控制臺空工程的話,那么會有編譯錯誤:errorC2664:"MessageBoxW”:不能將參數(shù)2從“constchar[17]n轉(zhuǎn)換為"LPCWSTR”
這個問題太普遍了,幾乎所有的初學者都會遇到而且感到難以應付,因為按照提示使用(LPCWSTR)強制轉(zhuǎn)型貌似并不能幫助我們解決問題,而且這個程序在VC6下面應該是沒有任何問題的,那問題出現(xiàn)在哪里呢?問題在這里,請右鍵單擊解決方案瀏覽器下面的項冃,屬性,t>通用屬性t>通用屬性,配置層性常規(guī)覺VC++目錄?C/C++?清單工具?XML文檔生成器t?瀏覽信息t>生成事1牛D自定義生成步霧0代碼分析粕出目錄$(SolutionDir)$(Confi(中間目錄$(Configuration)\目叔的S(PrqjectName)目叔イ的曲.exe清除時要刪除的擴展名\cdf;*.cache;w.obj;*.ilk生成日志文件$antDir)\$(MSBuildPr平臺工具集vlOO項目默認值應用程序(.exe)MFC的使用使用行準Windows庫ATL的?用不使用ATL字符集使用Unicode字符集公共語言運行時支持語言運行全程序優(yōu)化無全程序優(yōu)化Bc§(C):活動(Debug) ▼平臺(P):活動(Win32)字符集譯用指定的卻集;幫助蝶夬:?強.問題的根本就是字符集問題,在VC6中,我們默認使用的是多字節(jié)字符集,而現(xiàn)在我們默認需要的是UNICODE字符集,簡單的,我們把這個字符集改成多字節(jié)字符集這個問題就解決了:
MFC的使用ATL的蜥 應用程序(.exe)使用協(xié)隹Windows庫不使用ATL字符集使用多字節(jié)字符集公共語言運行時支持全程序優(yōu)化無公共語言運行時支持無全程序優(yōu)化再試試應該就可以了吧?但是我并不推薦大家這么做,因為讓自己的程序適應各種字符集是我們寫代碼的人義不容辭的義務。我們把程序改成下面這樣:#include<iostream>^include<Windows.h>#include<tchar.h>usingnamespacestd;intmain()IMessageBox(NULL,TEXT("你好HelloWorld!つ,TEXT("Information"),0);MessageBox(NULL,_T("你好HelloWorld!"),_T("Information"),0);return0;)用兩個宏TEXT或者_T都可以解決這個問題,它們兩個并沒有太大區(qū)別,也許區(qū)別在于前者是通過windows.h頭文件引入的,而」是通過tchar.h引入的,我推薦大家使用」'和tchar.h,因為tchar.h還幫助我們引入了其它ー些很有用的宏,比如—tcscpy_s,這個宏在使用UNICODE字符集的時候被替換成wcscpy_s,在使用多字節(jié)字符集的使用被替換成strcpy_so關于這部分的內(nèi)容,請大家不要錯過《Windows核心編程》的第二章(第四版或第五版都可以),以及《深入學習C++Strings1版》〇它們都有提到。有人聽說T可以把多字節(jié)字符串轉(zhuǎn)換成UNICODE,因此他寫了如下的代碼:constchar*pStr="haha哈哈”;MessageBox(NULL,_T(pStr),_T("Informalion"),0);當然,除非你運氣好的抓狂,否則你是編譯不過去的,為什么呢?我們現(xiàn)在應該知道對于"Hello”這樣的字符串,VC2010會默認的將它視為constchar*,即多字節(jié)字符串,而L"Hello"前面有個L前綴的被視為UNICODE字符串,這和C#是有區(qū)別的,因為C#的字符串總是被視為UNICODE,C++/CL!下面編譯器也會幫助我們做到這件事情,所以它們不需要L(C++/CLI兼容L這種寫法)。讓我們看看T的定義吧:ttdefinewxCONCATHELPER(text,line)textttttline/*couldalreadybedefinedbytchar.h(it'squasistandard)*/ttifndef_T#if!wxUSE_UNICODE^define_T(x)xttelse/*Unicode*//*usewxCONCAT_HELPERsothatxcouldbeexpandedifit'samacro*/8define_T(x)wxCONCAT_HELPER(L,x)Sendif/*ASCII/Unicode*/ttendif/*[defined(_T)*/_T在UNICODE下面最終會被替換成Lttttx。##是ー個編譯預處理指令,意味著讓L和x貼在ー起,比如L##"Hello"最終就是L"Hello",因此它可以把"Hello"轉(zhuǎn)換成UNICODE字符串。那為什么上面的程序不行呢?讓我們看看」'("pStr")會被替換成什么:L##pStr->LpStr,哦,LpStr是一個新的標識符,如果你沒有定義過它,你當然不能通過編譯啦。因此我們可以了解到T這樣的宏只能處理宜接的常量字符串,不能處理其它的情況。而我們上面演示的那種情況需要我們動態(tài)的去轉(zhuǎn)換編碼,Windows有API可以幫助我們做到,c庫也有函數(shù)可以幫助我們。恰好我曾經(jīng)寫過這樣的代碼,歡迎大家參考:ASCII/UNIC0DE/UTF8字符串互相轉(zhuǎn)換的C++代碼對于」'宏,再說一點東西,或許你會感到奇怪為什么_T不直接定義成#(16見加_11(*)し##x,而要繞個圈子去調(diào)用wxCONCAT_HELPER呢?這實際上涉及到宏展開順序和截斷的問題。在這里,我們需要說ー個宏參數(shù)的概念,這很函數(shù)的參數(shù)是類似的,這里一T(x)的x就是宏參數(shù),好,記住下面一句話:如果你定義的宏中使用了#或者是##的話,宏參數(shù)將不會被展開,也就是說」>(x)如果直接定義成L##x那么在下面這種情況就會出錯(PS:#是給參數(shù)加引號的意思):_T(_FUNCTION_),_FUNCTION_是一個預定義的宏,它代表了當前函數(shù)的名字,這個展開會是什么呢?L_FUNCTION_?為什么間接調(diào)用wxCONCATJiELPER就能得到正確的結果呢?因為當我們調(diào)用wxCONCAT_HELPER的時候,—FUNCTION一已經(jīng)被ーT展開成了函數(shù)名。說多了說多了,如果你覺得復雜可以暫時跳過這些東西,我只是順便說說。重定義的編譯錯誤和鏈接錯誤讓我們在項目里面再添加一個Test.h頭文件,方法是右擊解決方案中的項目,添加,新建項,C++頭文件,名稱輸入test,h。然后我們在test,h中輸入:/*#pragmaonce*/voidprint()回到main,cpp中:ftinclude<iostream>usingnamespacestd;#include"Test,h"^include"Test,h"intmain()Ireturn0;J編譯一下我們會得到重定義的編譯錯誤:errorC2084:函數(shù)"voidprint(void)"已有主體或許你會說,你引用*include)了兩次,我沒你那么傻,我只引用一次不就好了么?是的。你聰明,但是是小聰明哈,因為你不能保證每個人都不去引用它。這個問題演示的是#pragmaonce的用處,讓我們解開它的注釋。編譯成功!^pragmaonce的作用就在于防止頭文件被多次引用。你或許見過ftifndef_TEST_H_#define_TEST_H__代碼ttendif這樣的代碼,它們的作用是一樣的,如果你跟我ー樣懶,那么就用#pragmaonce,如果你打算去沒有這個指令的編譯器上編譯代碼,那么還是用后面一種方式吧。現(xiàn)在讓我們來見識ー個對初學者稍微復雜ー點的鏈接錯誤,用創(chuàng)建main.cpp的方法再添加一個test,h頭文件,輸入#include"Test,h”即可。6Testh▼:すE:\Documents\VisualS1(全局范:圍)?include"Test.hR1?include"Test.hR1testcppXTesthMain.cpp胃螺關方案"HelloWorld"(1個項目)」第HelloWorld>以外部依賴項?セ頭文件ih|Testh?む源文件5Main.cpp片testxppョ資源文件讓我們再編譯ー次。l>test.obj:errorLNK2005:"void_cdeclprint(void)"(?print@@YAXXZ)已經(jīng)在Main,obj中定義1>e:\documents\visualstudio2010\Projects\HelloWorld\Debug\HelloWorld.exe:fatalerrorLNK1169:找到ー個或多個多重定義的符號如果說編譯錯誤好找的話,鏈接錯誤對于初學者來說就有點麻煩了,聰明的初學者會去Google、百度尋找答案,笨的初學者就會找所謂的高手、前輩問,而這些高手Or前輩未必有心情為你解釋。要解決這個錯誤有無數(shù)種方法。內(nèi)聯(lián),把print聲明為內(nèi)聯(lián)函數(shù)。inlinevoidprint()()這個方法的好處是簡單,壞處是局限性太強,意味著你總是需要公開print的實現(xiàn),因為內(nèi)聯(lián)函數(shù)必須在編譯時就知道實現(xiàn)オ行。static,把print聲明為static函數(shù):staticvoidprint()〇這便告訴編譯器,哥是唯一的,而且哥只能被本編譯單元的代碼調(diào)用,這和extern是對應的。簡單來說,想要哥幫你做事,請先include哥聲明的頭文件,也就是#include“test.h"o.h頭文件中只放聲明,實現(xiàn)放到.cpp中去?,F(xiàn)在test,h中只有voidprint();?而實現(xiàn)在test,cpp中:^include"Test,h”voidprint()(inta=1;cout<<a++<<endl;}這個時候有意思的是我們在main,cpp無需包含test,h頭文件也可以引用print函數(shù),因為print并非static的函數(shù):voidprint();intmain()(print();print();return0;)但是聲明一下是必須的。由于百度空間的帖子的篇幅是有限制的,因此今天只好就說這么幾點了。新的內(nèi)容請大家等候下一章。合理組織項目、使用外部工具讓工作更...這一章跟大家分享一些與C++項目管理、VAX、SVN、VS快捷鍵等方面的東西。有效的在項目中組織C++文件,分配各種文件的目錄對以后的維護會有好處的,至少不會出現(xiàn)不知道什么東西在什么地方,特別是大的項H,這里用TextSearcher來做例子。使用SVN來管理項目會讓我們的工作更輕松,工作也會更簡單容易。掌握常用的快捷鍵和常用的VS功能讓我們的工作更有效。合理的組織文件體系首先說在IDE中為我們的文件分類組織,如下圖所示:文件(B筋(£)視圖QOVAssistX項目電生成⑥調(diào)試⑼團隊(M)數(shù)據(jù)@工具(D體系結構gSSt(S);亠!?二]?づ乂』67 ,Debug_DLL▼Win32 ,サ?:?uj」Iマ立ロ室I亠Iq|コ,/?圜戰(zhàn)|凸。ノ倉謂卽もく“我把不同功能的代碼和文件放在不同的Filter下面,如何添加這樣的Filter呢?力ア大ノコ?teIexiiedrcrier_vczu±u(丄fソ火匕?+31TextSearchert>コConfig<qLocal?。,;(全局范圍)1日/**?gbrief主程序引美向?qū)В?).??Ctrl+Shift+X恥UpdatetoLatestVersionSubversion?あ里切CDCtrl+X〇復制團Ctrl+C6WW(P)Ctrl+VX刪除MDel重命名(M)F2.屬性兇添加?)t>me?シ內(nèi)聯(lián)>ブ外部,ル頭交」けaし13?項改)…現(xiàn)有項@…Ctrl+Shift+AShift+Alt+Aユ樹雷K年前せ)ャ類(Q...ャ資源?...ude<wx/wx.h>MB=文本搜索工具}文件(&F)i>i>ロControls>ロGUI5Search=?^(&S)=新猱鮭支,工xn這樣就可以添加篩選器了,默認情況下VS為我們創(chuàng)建三個篩選器:頭文件、源文件和資源文件,實際上我們可以再增加很多。這樣區(qū)分開的好處就是各個功能的代碼被分開了,在文件很多的情況下不會造成混亂。如TextSearcher,它的搜索算法、軟件控制邏輯、自定義控件、GUI模塊、線程化操作都是分開的,這樣我可以很容易找到我想找的文件,而且還可以檢視自己的模塊劃分是否合理等等。接下來推薦大家在項目資源瀏覽器中為不同的文件劃分目錄。V?> .svn文件夾〇1include文件夾dbghelp.dll^^IWindowsImageHelperConfig文件夾Localization文件夾dbsoft.log文本文檔148字ラmsvcr90.dllみ9.0.30729.1 Microsoft?CRuntimeLibrary一TextSearcher.vcproj.CX-234123.ーAdministrator.userセ1/^9VisualStudioProjectUserOpt..TextSearcher.exe2010/6/1616:374.05MBTextSearcher.vcproj,董波-PC,童波.userVisualStudioProjectUserOpt..Debug.DLL文件夾Release文件夾Microsoft.VC90.CF灑![MANIFES!文件1.81KBTextSearcher.rcResourceScript8乃字ラTextSearcher.vcxpVC++Project14.8KBTextSearcher.vcxproj.userVisualStudioProjectUserOpt...143字ラ比如上圖將頭文件和源文件、資源圖標文件、本地化文件和配置文件分開組織,這樣也是為了防止混亂。值得注意的是當我們把文件用文件分開的時候,需要在項目屬性設置里面包含我們的子目錄,否則我們無法在源文件中直接用#include指令包含我們的頭文件。如下圖所示這樣的情況,如果不添加,無法找到頭文件。
SearchJobCache...ThreadManager.hXMainApp.hQSearchJobCacheWorkerl▼QD:\TextSearcher\TextSearcher\include\SearchJobCacheWorkerThreadMana<(全局范;圍)10111213tinclude"SearchJobCacheOption.hnギinclude<wx/wx.h>tinclude"SearchJobCacheWorkThread?h”14HclassCSearchJobCacheWorkerThreadManager:publicCWorkThreadManager15 {16public:17 CSearchJobCacheWorkerThreadManager(CSearchPanel*pParenc);18 virtual*C5earchJobCacheWorkerThreadManager();1920public: 100%?"1 mSearchJobCache...readManager.cppマ?QSearchJobCacheWorkerl▼:。D:\TextSearcher\TextSearcher\source\SearchJobCacheWorkerThreadManac(全局范圍)1S/**234*@briefSearchJobcacheworker*^authordongbo*@dare2010.6.45**/學include"SearchJobCacheWorkerThreadManager.hw^rincxuae”nearcnヒane丄.n”910?include"SearchJobCacheWorkThread.h"?include<algorithm>如下圖所示,找到項目屬性中,C++,常規(guī)中把我們的子目錄作為附加路徑添加到“附加包含冃錄”中。
配置(C):活動配置(C):活動(Debug一DLL)」配置憲性常規(guī)WVC++目錄/C/C++常規(guī)理器代碼生成語言預編譯頭端出文件瀏覽信息高級?tags0清單工具|>資源XML文檔生成器>瀏覽信息口生成事1牛叁定義生成步景代碼分析▼平臺(P):活動(Win32)▼平臺(P):活動(Win32)如果你打算寫ー個比較大一點的項目,我推薦你使用源代碼管理工具來管理你的C++項目,你可以選擇SVN,也可以選擇其它的,我推薦SVN,因為簡單容易上手。當你在做ー個很復雜的東西的時候,花了兩三天的時間去做修改,不過后來發(fā)現(xiàn)這個修改并不合適,想還原到三天以前,如果你沒有用源代碼管理工具管理自己的項目也沒有自己手動的備份,那恭喜你,你得開始人肉還原了,這是多么悲劇的一件事情啊,然而如果你使用了SVN管理的話,只需要在三天前開始修改前的最后一次穩(wěn)定版本Commit一次,三天之后如果耍還原,只需要使用工具Revert就好了,而且不但可以回到三天前的版本,你甚至可以回到以前每一次Commit的版本,(0〇〇)哇,這是多么好的工具啊!要使用SVN,首先需要SVN客戶端,SVN服務器是可選的。我推薦大家使用TortoiseSVN這個SVN客戶端,因為它簡單易用、免費,支持Windows32Bit、64Bit,你可以去他們的官方網(wǎng)站下載,地址點我。有了這個工具當然還不夠,為了讓我們的SVN跟VS2010結合的更緊密,我們需要再下載ー個SVNForVS的插件,我強烈推薦你使用它,因為它也非常簡單易用,下載地址點我。最新版是支持VS2010的。當你裝了這個插件的時候,如果你的項目是在SVN的管理之下,那么你的項目看起來會一些不同:文件(F)編輯(E)視圖(V)VAssistX項目(P)生成(B)調(diào)試(D)團隊(M)數(shù)據(jù)(A)IM(T)體系結構(Q渕試⑸?ト刈?」H』る7 ?Debug.DLL,Win32 ,サ」さ 一ー三制。」?二?圍盤,テを一タ電3Gくに看到文件左邊的勾了嗎?灰色的勾表示正常,而橙色的勾表示已經(jīng)更改了,而PendingChanges則告訴我們哪些文件時新加的,哪些文件被改過了,如果要還原的話,只需要選擇該文件,右鍵點擊,Revert就好了:
SearchJobCache...ThreadManager.hMainApp.hSafeQuitThread.cpp*XSearchJobCache...ThreadManager.hMainApp.h〇SafeQuitThread.cpp▼た"D:\TextSearcher\TextSearcher\source\SafeQui(全局范圍)2345689111210023456891112100%▼^endingChanges-SourceFilesMessage:LZPathノビ]TextSearcher/source/Sare51TTinreacrcpp7rextSearcher/TextSearcher.vcxprqj4,田TextSearcher/TextSearcher.vcxproj.filters圍閉TextSearchejVC2010.slnJOpeninVisualStudiorm_b曲UpdatetoLatestVersionCommit..鯉ShowChanges包ViewHistoryvww.sv3RevertSubversion ?居屬性(R)FuCommit▼為Update▼CSafeQuitThread::CSafeQuitThread(CSafeQui^tThreadMan.ヒRiGEav???ヒUDTextSear...NewDTextSear...NewD<Solutio...NewD@briefSafeQuitThreadSauthordongbo@date2010.6.7?includenSafeQuitThread?h”?includenSafeQuitThreadManager.hn10如果你已經(jīng)安裝好了AnkhSVN插件但是又看不到的話,那么請檢查下系統(tǒng)選項卡里面是否選擇了它作為默認的源代碼管理工具:
回過頭去繼續(xù)說SVN,當我們安裝好TortoiseSVN之后(安裝后可能需要重啟),我們在資源管理器中點擊右鍵的時候就能看到它的菜單了:畫SVNCheckout.. |圮TortoiseSVN?1RRepo-browseris共享文件夾同步?,Export..新建(W)?:Createrepositoryhere屬性(R)闌!mport..健Settings?Help番About雖然TortoiseSVN有中文語言包,但是我推薦大家使用英文的,就像古詩一定要用中文來表達一樣,沒有比英語單詞表達SVN項目管理更恰當?shù)脑~了。SVNCheckout可以讓你獲取其它地方SVN服務器上面的某個項目的源碼,當然,前提是你要有權限オ行,現(xiàn)在讓我們試試。隨便找個盤符如F盤,點右鍵,選擇SVNCheckout,然后UriofRepository中輸入svn:///TextSearcher這個地址,其它的不變,點擊0K。如圖所示:如果不出意外你能看到:如果你看到這個畫面說明你已經(jīng)Checkout成功了,那么恭喜你,你一經(jīng)取到了TextSearcher的源碼,當然要說一點的是,這個源碼可能你取到之后編譯不了,因為還有另外一些依賴項如dbsoft、boost、wxWidgets并不在這個SVN上面。這樣大家就可以去ー些開源的網(wǎng)站上面Check你想要的東西了,哈哈。推薦大家去這個網(wǎng)站找自己感興趣的代碼Checkout:http://sourceforge,net/現(xiàn)在我們說如何管理自己的項目,大家可以像我ー樣去ー些提供免費SVN服務器服務的網(wǎng)站上面注冊ー個賬號建立項目就好了,比如說我使用的這個WWW.,這個畢竟是國內(nèi)的,另外上面的sourceforge,net也可以。當你注冊建立項目成功之后就可以通過菜單!mport把需要導入的東西導入到SVN服務器了:
用ACDSeePhotoManager123理添加至リWinamp書簽列表中(B)加入Winamp隊列(E)用Winamp播放(P)Converttofileformat...共享(H) ?國 SVNCheckout..圮 TortoiseSVN ?乳 Repo-browser⑥ UltralSO ? ,Export...溥添加到壓縮文件(A)... .漬SDQ5IJ-VitualSystem.rar-m 口 Createrepositoryhere営 E-mail... 寓Import...営圧縮到"VitualSystem.rar"并E-mail =く,“:導入界面的地址欄輸入我們的SVN服務器地址即可,類似于:svn:///TextSearchero導出的時候記得輸入日志。除了可以導入SVN服務器之外,我們還可以使用文件協(xié)議在自己的電腦上管理我們的代碼,如果你不需要在多臺電腦上面共同維護這個項目的話。讓我們隨便找個地方新建一個文件夾,如D:\TestSVNServer這個文件夾,然后對著這個新建的文件夾點右鍵,選擇SVN>Createrepositoryhere,OK,你的本地SVN服務器已經(jīng)建好了。如果創(chuàng)建成功,你會發(fā)現(xiàn)這個文件夾里面多了好多東西:文件夾文件夾
文件夾文件夾沒關系,這是SVN服務必須要的ー些東西,現(xiàn)在讓我們使用文件協(xié)議導入我們的項目到該SVN服務器中,找到我們要導入的項目,跟導入網(wǎng)絡上的SVN服務器ー樣,右擊項目文件夾,SVN>Import?在!mport界面中這樣填:不出意外你會導入成功,那么現(xiàn)在我們需要去其它地方重新獲取這些東西了,換個地方,比如F盤根目錄,選擇SVNCheckout,然后地址輸入剛オ導入的地址:
注意如上圖這樣是不行的,因為我們沒辦法在F盤根目錄下面創(chuàng)建一個D:\TestSVNServer文件夾,把D:'這個SVN幫我們自己填充的路徑刪掉然后點確定?,F(xiàn)在我們已經(jīng)Checkout了剛オ導入的項目了,Planet文件夾已經(jīng)帶上了一個綠色的勾。點擊這個Planet目錄,選擇SVN>ShowLog,你會看到:公’LogMessages-F:\Planet:a(F:)?IIDevelop\文?IIDevelop\文?)Game!文イ軼PPVADownloads【サ文件夾dPlanet!文?陣中▼ 共享▼刻錄 新建文件夾10/7/311:53如的化息ベ.ActionPath CopyfronAdded/DXUTAdded/DXUT/CoreAdded/DXLTT/Core/DXUT.cppAdded/DXUT/Core/DXlTT.hAdded /DXUT/Core/DXirTCore.20Q5.sln Added QX57Core/DXUTCore_2005.vcpr“Added/DXUT/Core/DXUTCore_2008.slnAddedA5XUT/Core/DXLTrCore_2008.vcprojAdded QXUT/Core/DXUTenum.cppAdded QXLTT/Core/DXUTenum.hAddedQXUT/Core/DXUTmisc.cppAdded/DXUT/Core/DXUTmisc.h/HYIITtC/dni>u?r^Showing1revision(s),fromrevision1torevision1-1revision(s)selected.BHideunrelatedchangedpaths.ノiStoponcopy/rename匕]Includemergedrevisions評論:?價詫伍?卜Al ▼II 100IIRpfrAch在這個界面我們還可以檢查代碼的改變都是什么,這里由于是新的項目,所以沒有更改,我們可以找到TextSearcher的更改來比較它們的改動都是什么:
?「LogMessages-D:\TextSearcherヒFrom:2010/6/13▼To:2010/7/3 ▼ /Messages,authorsandpathsRevisionActionsAuthorDateMessage23早dbl2312:03:47,201碑7月3日為TextSearche峰加VS2010項目編譯支持。22dbl2320:00:17,2010年6月25日添加部分信息,用于取消對源代碼修改的依賴。21dbl2319:19:45,2010年6月21日更新。20dbl2311:14:25,2010年6月21日修復提示信息錯誤的Bug。19dbl2310:33:38,2010年6月21日増加搜索通知。18dbl2318:10:30,2010年6月17日更新設置對話框,重命名部分內(nèi)容。17承dbl2316:36:58,2010年6月16日添加UMし。16CGdbl2315:35:24,2010年6月16日自動滾動更新。-A-1XC3-IT、乂??一ー'△?ナ渾k加分信息,ス于取消對源代碼修改的依奴.ActionPathCopyfrompathRevisionActionPathModified/TextSearcher/Config/system.iniModified/TextSearcher/indude/SearchWizard,hModified/TextSearcher/source/SModified/readme,txtShowAllaShowchangesModified/TextSearcher/source/SModified/readme,txtShowAllaShowchanges良q良りとヨ占ヨ占三0BlamechangesShowchangesasunifieddiffOpenOpenwith...Blame...RevertchangesfromthisrevisionShowpropertiesShowlogGetmergelogsSaverevisionto...RefreshNext100Showing23revis?on(s),fromrevisB:HideunrelatedchangedpathsyjStoponcopy/renamerIIndudemergedrevisionsvC:\Users\...rev21.svn000.tmp.cppandC:\Users\...rev22.svnOOO.tmp.cpp-AraxisMergeextcomparisons
fc]ncxNewtextStartor
comparison▼recompare▼FT1StatisticsfjReportvC:\Users\...rev21.svn000.tmp.cppandC:\Users\...rev22.svnOOO.tmp.cpp-AraxisMergeextcompari
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年魯人版七年級化學上冊月考試卷含答案
- 2025年人教B版七年級數(shù)學上冊階段測試試卷
- 客戶體驗至上優(yōu)化客戶服務標準
- 2025年滬教版七年級科學上冊階段測試試卷
- 2025年北師大版必修3生物上冊月考試卷
- 大礦泉水瓶商標紙分離機安全操作規(guī)程
- 二零二五年度建筑工程中途退場施工資料交接合同3篇
- 二零二五年公司專屬汽車租賃服務合同范本2篇
- 2025年冀少新版八年級科學下冊月考試卷
- 2025年粵人版第三冊生物下冊階段測試試卷含答案
- 商鋪租賃撤場協(xié)議
- 2021版醫(yī)療廢物分類目錄專業(yè)解讀課件
- 樁基工程勞務分包施工方案
- 衛(wèi)生經(jīng)濟學理論知識考核試題及答案
- 反電信詐騙ppt-防范電信詐騙的ppt
- 危險化學品倉庫施工方案
- 加法交換律說課課件
- 樁基檢測的環(huán)保措施
- 輪機概論-大連海事大學
- 鋼筋計算截面面積及理論重量
- 基層動物防疫員培訓課件
評論
0/150
提交評論