《測(cè)繪生產(chǎn)質(zhì)量管理規(guī)定》完全版
測(cè)繪生產(chǎn)質(zhì)量管理規(guī)定
國(guó)家測(cè)繪局1997年7月發(fā)布
第一章總則
第一條為了提高測(cè)繪生產(chǎn)質(zhì)量管理水平,確保測(cè)繪產(chǎn)品質(zhì)量,依據(jù)《中華人民共和國(guó)測(cè)繪法》及有關(guān)法規(guī),制定本規(guī)定。
第二條測(cè)繪生產(chǎn)質(zhì)量管理是指測(cè)繪單位從承接測(cè)繪任務(wù)、組織準(zhǔn)備、技術(shù)設(shè)計(jì)、生產(chǎn)作業(yè)直至產(chǎn)品交付使用全過程實(shí)施的質(zhì)量管理。
第三條測(cè)繪生產(chǎn)質(zhì)量管理貫徹“質(zhì)量第一、注重實(shí)效”的方針,以保證質(zhì)量為中心,滿足需求為目標(biāo),防檢結(jié)合為手段,全員參與為基礎(chǔ),促進(jìn)測(cè)繪單位走質(zhì)量效益型的發(fā)展道路。
第四條測(cè)繪單位必須經(jīng)常進(jìn)行質(zhì)量教育,開展群眾性的質(zhì)量管理活動(dòng),不斷增強(qiáng)干部職工的質(zhì)量意識(shí),有計(jì)劃、分層次地組織崗位技術(shù)培訓(xùn),逐步實(shí)行持證上崗。
第五條測(cè)繪單位必須健全質(zhì)量管理的規(guī)章制度。甲級(jí)、乙級(jí)測(cè)繪資格單位應(yīng)當(dāng)設(shè)立質(zhì)量管理或質(zhì)量檢查機(jī)構(gòu);丙級(jí)、丁級(jí)測(cè)繪資格單位應(yīng)當(dāng)設(shè)立專職質(zhì)量管理或質(zhì)量檢查人員。第六條測(cè)繪單位應(yīng)當(dāng)按照國(guó)家的《質(zhì)量管理和質(zhì)量保證》標(biāo)準(zhǔn),推行全面質(zhì)量管理,建立和完善測(cè)繪質(zhì)量體系,并可自愿申請(qǐng)通過質(zhì)量體系認(rèn)證。
第二章測(cè)繪質(zhì)量責(zé)任制
第七條測(cè)繪單位必須建立以質(zhì)量為中心的技術(shù)經(jīng)濟(jì)責(zé)任制,明確各部門、各崗位的職責(zé)及相互關(guān)系,規(guī)定考核辦法,以作業(yè)質(zhì)量、工作質(zhì)量確保測(cè)繪產(chǎn)品質(zhì)量。
第八條測(cè)繪單位的法定代表人確定本單位的質(zhì)量方針和質(zhì)量目標(biāo),簽發(fā)質(zhì)量手冊(cè);建立本單位的質(zhì)量體系并保證其有效運(yùn)行;對(duì)提供的測(cè)繪產(chǎn)品承擔(dān)產(chǎn)品質(zhì)量責(zé)任。
第九條測(cè)繪單位的質(zhì)量主管負(fù)責(zé)人按照職責(zé)分工負(fù)責(zé)質(zhì)量方針、質(zhì)量目標(biāo)的貫徹實(shí)施,簽發(fā)有關(guān)的質(zhì)量文件及作業(yè)指導(dǎo)書;組織編制測(cè)繪項(xiàng)目的技術(shù)設(shè)計(jì)書,并對(duì)設(shè)計(jì)質(zhì)量負(fù)責(zé);處理生產(chǎn)過程中的重大技術(shù)問題和質(zhì)量爭(zhēng)議;審核技術(shù)總結(jié);審定測(cè)繪產(chǎn)品的交付驗(yàn)收。第十條測(cè)繪單位的質(zhì)量管理、質(zhì)量檢查機(jī)構(gòu)及質(zhì)量檢查人員,在規(guī)定的職權(quán)范圍內(nèi),負(fù)責(zé)質(zhì)量管理的日常工作。編制年度質(zhì)量計(jì)劃,貫徹技術(shù)標(biāo)準(zhǔn)及質(zhì)量文件;對(duì)作業(yè)過程進(jìn)行現(xiàn)場(chǎng)監(jiān)督和檢查,處理質(zhì)量問題;組織實(shí)施內(nèi)部質(zhì)量審核工作。
各級(jí)質(zhì)量檢查人員對(duì)其所檢查的產(chǎn)品質(zhì)量負(fù)責(zé),并有權(quán)予以質(zhì)量否決,有權(quán)越級(jí)反映質(zhì)量問題。
第十一條生產(chǎn)崗位的作業(yè)人員必須嚴(yán)格執(zhí)行操作規(guī)程,按照技術(shù)設(shè)計(jì)進(jìn)行作業(yè),并對(duì)作業(yè)成果質(zhì)量負(fù)責(zé)。
其他崗位的工作人員,應(yīng)當(dāng)嚴(yán)格執(zhí)行有關(guān)的規(guī)章制度,保證本崗位的工作質(zhì)量。因工作質(zhì)量問題影響產(chǎn)品質(zhì)量的,承擔(dān)相應(yīng)的質(zhì)量責(zé)任。
第十二條測(cè)繪單位可以按照測(cè)繪項(xiàng)目的實(shí)際情況實(shí)行項(xiàng)目質(zhì)量負(fù)責(zé)人制度。項(xiàng)目質(zhì)量負(fù)責(zé)人對(duì)該測(cè)繪項(xiàng)目的產(chǎn)品質(zhì)量負(fù)直接責(zé)任。
第三章生產(chǎn)組織準(zhǔn)備的質(zhì)量管理
第十三條測(cè)繪單位承接測(cè)繪任務(wù)時(shí),應(yīng)當(dāng)逐步實(shí)行合同評(píng)審(或計(jì)劃任務(wù)評(píng)審),保證具有滿足任務(wù)要求的實(shí)施能力,并將該項(xiàng)任務(wù)納入質(zhì)量管理網(wǎng)絡(luò)。合同評(píng)審結(jié)果作為技術(shù)設(shè)計(jì)的一項(xiàng)重要依據(jù)。
第十四條測(cè)繪任務(wù)的實(shí)施,應(yīng)堅(jiān)持先設(shè)計(jì)后生產(chǎn),不允許邊設(shè)計(jì)邊生產(chǎn),禁止沒有設(shè)計(jì)進(jìn)行生產(chǎn)。
技術(shù)設(shè)計(jì)書應(yīng)按測(cè)繪主管部門的有關(guān)規(guī)定經(jīng)過審核批準(zhǔn),方可付諸執(zhí)行。市場(chǎng)測(cè)繪任務(wù)根據(jù)具體情況編制技術(shù)設(shè)計(jì)書或測(cè)繪任務(wù)書,作為測(cè)繪合同的附件。
第十五條測(cè)繪任務(wù)實(shí)施前,應(yīng)組織有關(guān)人員的技術(shù)培訓(xùn),學(xué)習(xí)技術(shù)設(shè)計(jì)書及有關(guān)的技術(shù)標(biāo)準(zhǔn)、操作規(guī)程。
第十六條測(cè)繪任務(wù)實(shí)施前,應(yīng)對(duì)需用的儀器、設(shè)備、工具進(jìn)行檢驗(yàn)和校正;在生產(chǎn)中應(yīng)用的計(jì)算機(jī)軟件及需用的各種物資,應(yīng)能保證滿足產(chǎn)品質(zhì)量的要求,不合格的不準(zhǔn)投入使用。
第四章生產(chǎn)作業(yè)過程的質(zhì)量管理
第十七條重大測(cè)繪項(xiàng)目應(yīng)實(shí)施首件產(chǎn)品的質(zhì)量檢驗(yàn),對(duì)技術(shù)設(shè)計(jì)進(jìn)行驗(yàn)證。首件產(chǎn)品質(zhì)量檢驗(yàn)點(diǎn)的設(shè)置,由測(cè)繪單位根據(jù)實(shí)際需要自行確定。
第十八條測(cè)繪單位必須制定完整可行的工序管理流程表,加強(qiáng)工序管理的各項(xiàng)基礎(chǔ)工作,有效控制影響產(chǎn)品質(zhì)量的各種因素。
第十九條生產(chǎn)作業(yè)中的工序產(chǎn)品必須達(dá)到規(guī)定的質(zhì)量要求,經(jīng)作業(yè)人員自查、互檢,如實(shí)填寫質(zhì)量記錄,達(dá)到合格標(biāo)準(zhǔn)后,方可轉(zhuǎn)入下工序。
下工序有權(quán)退回不符合質(zhì)量要求的上工序產(chǎn)品,上工序應(yīng)及時(shí)進(jìn)行修正、處理。退回及修正的過程,都必須如實(shí)填寫質(zhì)量記錄。
因質(zhì)量問題造成下工序損失,或因錯(cuò)誤判斷造成上工序損失的,均應(yīng)承擔(dān)相應(yīng)的經(jīng)濟(jì)責(zé)任。
第二十條測(cè)繪單位應(yīng)當(dāng)在關(guān)鍵工序、重點(diǎn)工序設(shè)置必要的檢驗(yàn)點(diǎn),實(shí)施工序產(chǎn)品質(zhì)量的現(xiàn)場(chǎng)檢查。現(xiàn)場(chǎng)檢驗(yàn)點(diǎn)的設(shè)置,可以根據(jù)測(cè)繪任務(wù)的性質(zhì)、作業(yè)人員水平、降低質(zhì)量成本等因素,由測(cè)繪單位自行確定。
第二十一條對(duì)檢查發(fā)現(xiàn)的不合格品,應(yīng)及時(shí)進(jìn)行跟蹤處理,作出質(zhì)量記錄,采取糾正措施。不合格品經(jīng)返工修正后,應(yīng)重新進(jìn)行質(zhì)量檢查;不能進(jìn)行返工修正的,應(yīng)予報(bào)廢并履行審批手續(xù)。
第二十二條測(cè)繪單位必須建立內(nèi)部質(zhì)量審核制度。經(jīng)成果質(zhì)量過程檢查的測(cè)繪產(chǎn)品,必須通過質(zhì)量檢查機(jī)構(gòu)的最終檢查,評(píng)定質(zhì)量等級(jí),編寫最終檢查報(bào)告。
過程檢查、最終檢查和質(zhì)量評(píng)定,按《測(cè)繪產(chǎn)品檢查驗(yàn)收規(guī)定》和《測(cè)繪產(chǎn)品質(zhì)量評(píng)定標(biāo)準(zhǔn)》執(zhí)行。
第五章產(chǎn)品使用過程的質(zhì)量管理
第二十三條測(cè)繪單位所交付的測(cè)繪產(chǎn)品,必須保證是合格品。
第二十四條測(cè)繪單位應(yīng)當(dāng)建立質(zhì)量信息反饋網(wǎng)絡(luò),主動(dòng)征求用戶對(duì)測(cè)繪質(zhì)量的意見,并為用戶提供咨詢服務(wù)。
第二十五條測(cè)繪單位應(yīng)當(dāng)及時(shí)、認(rèn)真地處理用戶的質(zhì)量查詢和反饋意見。與用戶發(fā)生質(zhì)量爭(zhēng)議時(shí),按照《測(cè)繪質(zhì)量監(jiān)督管理辦法》的有關(guān)規(guī)定處理。
第六章質(zhì)量獎(jiǎng)懲
第二十六條測(cè)繪單位應(yīng)當(dāng)建立質(zhì)量獎(jiǎng)懲制度。對(duì)在質(zhì)量管理和提高產(chǎn)品質(zhì)量中作出顯著成績(jī)的基層單位和個(gè)人,應(yīng)給予獎(jiǎng)勵(lì),并可申報(bào)參加測(cè)繪主管部門組織的質(zhì)量評(píng)優(yōu)活動(dòng)。第二十七條對(duì)違章作業(yè),粗制濫造甚至偽造成果的有關(guān)責(zé)任人;對(duì)不負(fù)責(zé)任,漏檢錯(cuò)檢甚至弄虛作假、徇私舞弊的質(zhì)量管理、質(zhì)量檢查人員,依照《測(cè)繪質(zhì)量監(jiān)督管理辦法》的相應(yīng)條款進(jìn)行處理。測(cè)繪單位對(duì)有關(guān)責(zé)任人員還可給予內(nèi)部通報(bào)批評(píng)、行政處分及經(jīng)濟(jì)處罰。
第七章附則
第二十八條本規(guī)定由國(guó)家測(cè)繪局負(fù)責(zé)解釋。
第二十九條本規(guī)定自發(fā)布之日起施行。1988年3月國(guó)家測(cè)繪局發(fā)布的《測(cè)繪生產(chǎn)質(zhì)量管理規(guī)定》(試行)同時(shí)廢止。
擴(kuò)展閱讀:《VC++_201*入門經(jīng)典》完全版[]
《VisualC++201*入門教程》
寫在前面
在我還在上學(xué)的時(shí)候,我選擇了C++,最初我用VC6作為我的IDE,我看過很多本C++的教材,有的適合我,有的不適合我,其中有一本叫《VisualC++201*入門經(jīng)典》的書幫了我不少的忙。因?yàn)橥ǔ5腃++教材都只會(huì)介紹C++的語法什么的,很少會(huì)告訴我們?nèi)绾稳ゾ幾g、運(yùn)行,告訴我們什么是控制臺(tái)程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的區(qū)別是什么,F(xiàn)在有很多的朋友應(yīng)該也有這些問題吧?
學(xué)C++用C++也有幾年了,算不上熟悉,算是初窺門徑吧,我想我應(yīng)該做點(diǎn)什么幫助一下那些和曾經(jīng)的我一樣困惑的朋友,特別是學(xué)生朋友,告訴他們他們所困惑的問題的答案。記得我學(xué)C++的時(shí)候,沒有人教,有的時(shí)候也走了不少彎路,甚至連調(diào)試也不會(huì),也不知道可以通過看調(diào)用堆?凑{(diào)用次序,還自己慢慢的去搜索,好傻啊。
接下來我會(huì)做一個(gè)《VisualC++201*入門教程》系列,用來幫助初學(xué)者。剛開始學(xué)的時(shí)候是很痛苦的,這個(gè)我深有體會(huì),特別是身邊還沒有人能夠指導(dǎo)一二的。內(nèi)容主要涵蓋在Windows下面使用C++進(jìn)行開發(fā)的常見內(nèi)容,VisualStudio201*的使用,如何創(chuàng)建新項(xiàng)目,如何調(diào)試,如果配置項(xiàng)目屬性等等,另外還會(huì)介紹VisualC++201*中新加如的一些內(nèi)容,包括一些新的STL組建,一些新的語法支持等等。
由于本人水平有限,其中難免有錯(cuò)誤,希望大家諒解,如果大家有發(fā)現(xiàn)問題還請(qǐng)務(wù)必及時(shí)指出來,否則誤導(dǎo)了他人我就罪不容恕了。注意,本教程非
C++教程,不會(huì)教你C++,只
會(huì)教你如何使用VisualC++201*去練習(xí)去學(xué)習(xí)其它C++教材上面的程序。因此建議大家認(rèn)真的去看其他的C++教程,在使用VisualC++201*實(shí)踐的時(shí)候如果遇到問題可以到這里來參考。推薦《C++Primer》、《C++程序設(shè)計(jì)語言》《VisualC++201*入門經(jīng)典》。
第一章:關(guān)于VisualStudio、VC和C++的那些事首先,這三個(gè)東西有什么區(qū)別呢?VC和C++是相同的嗎,有什么區(qū)別呢?我剛開始學(xué)C++的時(shí)候也有這樣的問題,在這里我來替大家解釋一下他們到底是什么。
VisualStudio,我們一般都簡(jiǎn)稱為VS,VC全稱是VisualC++,C++就不用解釋了吧?VisualStudio其實(shí)是微軟開發(fā)的一套工具集,它由各種各樣的工具組成,這就好像Office201*是由Word201*、Excel201*、Access201*等等組成的一個(gè)道理。其中VisualC++就是VisualStudio的一個(gè)重要的組成部分。VisualStudio可以用于生成Web應(yīng)用程序,也可以生成桌面應(yīng)用程序,在VisualStudio下面,除了VC,還有VisualC#,VisualBasic,過去還有VisualJ#,現(xiàn)在還有VisualF#等等組件工具,使用這些工具你可以使用C++語言、C#語言或者Basic語言(微軟改進(jìn)版)進(jìn)行開發(fā)。這就好比桌上放著刀、叉、筷子,你可以用它們來吃飯,無論你用什么工具都可以,因?yàn)樗鼈兌际遣途叩囊环N。
VC,全稱是VisualC++,它只是一個(gè)工具而已。
C++是一門和C、Basic、C#、Java一個(gè)概念的東西,它是一門語言,這個(gè)概念就同漢語、英語、法語之間的關(guān)系一樣。語言的可以不同,他們有的復(fù)雜有的精簡(jiǎn),比如漢語,我個(gè)人認(rèn)為這是這個(gè)星球上最復(fù)雜的語言;又比如電影《阿凡達(dá)》中外星人使用的語言,不過100都個(gè)單詞而已。當(dāng)然,語言并沒有高低貴賤之分,而對(duì)語言掌握的好不好,說的好不好是有高下之別的。
一個(gè)語言都有哪些要素呢?語法就是其中一個(gè)重要的方面,比如你要對(duì)你所喜歡的人表達(dá)愛慕之情,那么你應(yīng)該說“我愛你”,你不能說“你愛我”,因?yàn)檫@搞錯(cuò)了主謂賓關(guān)系,因此我們通常都需要按照一定的規(guī)矩和原則表達(dá)才會(huì)讓別人正確理解我們真正的含義。在我們的漢語中有一些成語,它們通常都比較簡(jiǎn)單短小,但是卻能表達(dá)非常強(qiáng)烈的感情,而且效果非常好。比如你想罵一個(gè)壞人“你實(shí)在是太變態(tài)了,這種事情都干得出來!蹦憧梢赃@樣說:“你也太禽獸不如了!”對(duì)于編程的語言來說,其實(shí)也是有成語的,在我看來,這就是庫函數(shù)。通常我們?cè)诰幊痰臅r(shí)候都推薦選擇庫函數(shù),因?yàn)樗ǔ?huì)比較快一些。一直以來都有不少人混淆VisualC++和VisualStudio,其實(shí)最初VisualC++發(fā)布的時(shí)候還沒有VisualStudio這個(gè)東西,VisualC++是一個(gè)獨(dú)立的開發(fā)工具,與VisualBasic等并列,最后微軟將它們整合在一起組成了VisualStudio。
VisualC++從發(fā)布起到現(xiàn)在已經(jīng)有10個(gè)大版本了,我們這里介紹的VisualC++201*就是VisualC++10,簡(jiǎn)稱VC10。上朔10多年,VisualC++6.0發(fā)布了,這個(gè)被稱為史上最經(jīng)典的VC,現(xiàn)在有很多企業(yè)還在用它,大量的教材基于這個(gè)版本的VC來寫的。然而實(shí)際上VC6并沒有想象中的那么美好,孱弱的IDE,不完善的STL等等讓它越來越不適應(yīng)時(shí)代的發(fā)展,同時(shí)由于后來的版本和它的差別越來越大,讓很多習(xí)慣于VC6教材的人在新版本上無所適從。VC6走向歷史的終結(jié)點(diǎn)其實(shí)是必然的,只在于時(shí)間問題罷了,況且大部分人都有追求最新的“嗜好”,所以這里也選擇最新版的VC來做入門教程。下面來介紹下這個(gè)VC版本和VS版本的對(duì)應(yīng)關(guān)系:
VisualStudio.net(201*)-->VisualC++.net(201*)-->VisualC++7.0->_MSC_VER值1300
這個(gè)是微軟推出.net戰(zhàn)略之后的最早的一個(gè)版本的VC,這個(gè)版本相對(duì)VC6來說變化并不是很大,一些不標(biāo)準(zhǔn)的語法依然得到支持,不過IDE界面已經(jīng)出現(xiàn)了VS時(shí)代的雛形。
VisualStuido.net201*->VisualC++.net201*->VisualC++7.1->_MSC_VER值1310
這個(gè)版本我覺得只能算是一個(gè)對(duì).net201*的一個(gè)Patch版本,解決了一些Bug,不規(guī)范的語法依然得到支持,比如for循環(huán)變量作用域的問題。VisualStudio201*->VisualC++201*->VisualC++8.0->_MSC_VER1400
這個(gè)版本算是一個(gè)比較符合C++標(biāo)準(zhǔn)的VC版本了,微軟為這個(gè)版本的VC加入了大量的增強(qiáng)版的C庫函數(shù)(CRT函數(shù)),如strcpy_s之類,當(dāng)然,這部分并不是C和C++標(biāo)準(zhǔn)所要求的。
VisualStudio201*->VisualC++201*->VisualC++9.0->_MSC_VER1500
這個(gè)版本應(yīng)該是在Vista發(fā)布之后出的,如果你是在Vista或者Win7下面使用,那么應(yīng)該選擇這個(gè)版本。這個(gè)版本與VC201*變化并不大,不過它的SP1為C++帶來一些新的STL庫組件(tr1部分),以及MFC下面的Ribbon界面。VisualStudio201*->VisualC++201*->VisualC++10.0->_MSC_VER值1600.
這個(gè)就是我們即將要介紹的版本,那么讓我們來看一下它的啟動(dòng)畫面吧。
這個(gè)是VisualStudio201*中文旗艦版的啟動(dòng)畫面。下一章中,我將教大家安裝、配置VS201*/VC201*,以及如何使用它來創(chuàng)建第一個(gè)C++程序。如果你沒有下載過VisualStudio201*的話,那么請(qǐng)你提前下載好它吧:%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/bb0975dd801291d58c1029f5.html
第二章安裝、配置和首次使用VS201*
本章將幫助大家安裝VisualC++201*,幫助大家做一些常見的配置,以及第一次使用它來寫HelloWord程序。安裝
VisualC++201*是屬于VisualStudio201*的一部分,這個(gè)在前一章中已經(jīng)講解過,實(shí)際上VisualC++201*也有更多的子版本,正如Windows7有旗艦版、家庭高級(jí)版、家庭初級(jí)版一樣。在上一章的下載地址中有兩個(gè)版本可以選擇,我選擇的時(shí)候旗艦版,這個(gè)功能最全面。
如果你下載完畢了,應(yīng)該有一個(gè)ISO鏡像文件,如果你是從我給的地址下載的,那么那個(gè)序列號(hào)已經(jīng)被替換成正版序列號(hào),直接安裝即可。下面是ISO文件截圖:
這就是光盤鏡像文件,我們有多種方式可以安裝它,你可以把它燒錄成光盤,也可以用虛擬光驅(qū)軟件安裝它,由于這個(gè)ISO已經(jīng)被修改過了,你甚至可以直接解壓它,然后運(yùn)行里面的setup.exe進(jìn)行安裝。
這里我使用虛擬光驅(qū)進(jìn)行說明,首先我假設(shè)你已經(jīng)安裝好了虛擬光驅(qū)軟件DAEMONToolsLite,如果你還沒有安裝,請(qǐng)去游俠補(bǔ)丁網(wǎng)下載,因?yàn)樵谀抢锬憧偸悄苷业阶钚碌拿赓M(fèi)版本。
接下來我們通過虛擬光驅(qū)加載剛才下載好的ISO鏡像:
在彈出的對(duì)話框中選擇我們下載好的ISO文件。這個(gè)時(shí)候,虛擬光驅(qū)里面已經(jīng)替我們打開了ISO文件,有的機(jī)器可能會(huì)自動(dòng)彈出安裝提示,有的不會(huì)。如果自動(dòng)彈出安裝提示,那么直接通過即可,如果沒有彈出,那么用資源管理器方式進(jìn)入虛擬光驅(qū)點(diǎn)擊Setup.exe即可開始安裝。
由于我已經(jīng)安裝好了VS201*,所以接下來無法給大家截圖了,我就直接用文字描述吧。當(dāng)彈出VS201*安裝程序之后點(diǎn)下一步,然后我們可能會(huì)看到完全最小自定義這樣的選項(xiàng),我推薦大家選擇自定義,因?yàn)橹挥羞@樣我們才可以自定我們安裝的目錄。接下來會(huì)選擇安裝的組件。這個(gè)時(shí)候我們會(huì)看到大量的VS201*的組件,這里我們可以選擇是否安裝Basic是否安裝C#等等,我在網(wǎng)上找到一些圖片,雖然跟中文版201*不一樣,大家大概的樣子是一樣的,大家就湊合著看看吧。
下面是開始的界面,我們應(yīng)該選擇安裝VS201*.
上面這個(gè)時(shí)候選擇同意。然后安裝包會(huì)開始搜集信息:
選擇目錄:
然后就是開始安裝了,注意安裝的時(shí)候可能需要重啟一兩次。
最后安裝成功:
配置
當(dāng)安裝成功之后,我們就可以開始使用了,這里我先教大家做一些常見的配置,當(dāng)然大家也可以直接用默認(rèn)的設(shè)置,我這樣配置主要是為了方便。下面通過開始菜單來啟動(dòng)VS201*吧:
如果你是第一次開始,那么可能會(huì)讓你選擇默認(rèn)的環(huán)境設(shè)置,我們要使用VC當(dāng)然選擇VC的配置:
出現(xiàn)下面的畫面表示已經(jīng)成功安裝和運(yùn)行了。這是起始頁面,以后你會(huì)經(jīng)常見到它。
注意,你可能會(huì)沒有VAssistX這個(gè)菜單,因?yàn)檫@個(gè)是個(gè)外部工具,以后會(huì)給大家解釋它的用處,現(xiàn)在暫時(shí)忽略。接下來讓我們來做一些常見的設(shè)置。通過菜單工具》選項(xiàng)調(diào)出配置對(duì)話框,下面是一些常見的設(shè)置:
調(diào)處行號(hào),選擇文本編輯器,所有語言,把行號(hào)打成勾。如果你想調(diào)整字體或者顏色,那么可以在這里選擇:
單擊工具欄的空白區(qū)域,讓我們把生成工具欄調(diào)出來:
這樣我們就可以直接在工具欄上面選擇編譯項(xiàng)目、編譯整個(gè)解決方案、運(yùn)行程序和調(diào)試程序了。選擇生成工具欄旁邊的小三角形可以自定,我們還可以添加一些按鈕:
單擊自定義界面下面的添加按鈕就可以添加新的按鈕了,現(xiàn)在我們把開始執(zhí)行(不調(diào)試)添加工具欄中:
以前經(jīng)常有人問我為什么我的程序閃一下就沒了,這就是因?yàn)樗鼈儼颜{(diào)試(F5,那個(gè)實(shí)心的三角形)當(dāng)成了運(yùn)行(不調(diào)試,Ctrl+F5,空心帶尾巴的三角形)了。當(dāng)然是一閃而過啦。關(guān)于調(diào)試以后說到。
HelloWorld.
下面讓我們用VC++201*也就是VC10來做一個(gè)控制臺(tái)的HelloWorld程序吧。VC201*里面不能單獨(dú)編譯一個(gè).cpp或者一個(gè).c文件,這些文件必須依賴于某一個(gè)項(xiàng)目,因此我們必須創(chuàng)建一個(gè)項(xiàng)目。有很多種方法都可以創(chuàng)建項(xiàng)目,可以通過菜單:文件,新建,項(xiàng)目;也可以通過工具欄點(diǎn)擊新建項(xiàng)目進(jìn)行創(chuàng)建。這里我們點(diǎn)擊起始頁面上面的新建項(xiàng)目:
點(diǎn)擊之后進(jìn)入新建項(xiàng)目向?qū)В?/p>
上面選擇Win32控制臺(tái)應(yīng)用程序,名稱中輸入HelloWorld點(diǎn)確定,至于是否為解決方案創(chuàng)建目錄我們暫時(shí)不管,那主要區(qū)別在于解決方案是否和項(xiàng)目文件在同一目錄。
接下來進(jìn)入創(chuàng)建頁面,在Win32應(yīng)用程序向?qū)У牡谝粋(gè)頁面直接點(diǎn)下一步即可:
下個(gè)頁面記得選擇空項(xiàng)目,我們不需要預(yù)編譯頭:
點(diǎn)擊完成。
這時(shí)候一個(gè)空的項(xiàng)目編譯成功了,我們不妨編譯一些試試。點(diǎn)擊剛才添加的生成工具欄的生成按鈕:
這時(shí)候我們會(huì)遇到編譯錯(cuò)誤,為什么呢?因?yàn)槲覀冞沒有Main函數(shù),對(duì)于一個(gè)C++項(xiàng)目來說,一定要有一個(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)行編譯也是沒有意義的,因?yàn)槟莻(gè)文件并不是我們項(xiàng)目的一部分。
現(xiàn)在我們可以添加一個(gè)代碼文件進(jìn)來了,這個(gè)代碼文件可以是已經(jīng)存在的也可以是新建的,這里新建一個(gè)。右鍵單擊項(xiàng)目名稱,選擇添加,新建項(xiàng):
在向?qū)е羞x擇代碼、C++文件(.cpp),名稱輸入Main,確定。
這時(shí)候已經(jīng)成功添加了一個(gè)Main文件,注意添加新文件的時(shí)候要防止重名:然后我們輸入最簡(jiǎn)單的幾行代碼,然后編譯它吧,編譯方法和上面一樣。
如果編譯成功你會(huì)看到上面的畫面,如果失敗會(huì)有錯(cuò)誤提示,那么你可以根據(jù)提示去修改項(xiàng)目配置或者代碼。然后讓我們用Ctrl+F5或者點(diǎn)那個(gè)空心三角形運(yùn)行一下吧:OK了,接下來你可以通過更改這個(gè)程序去練習(xí)C++教材上面的程序了。
這一章的內(nèi)容就是這么多了,下一章中我們將討論以下內(nèi)容:什么是C++?什么是編程等等。
第三章關(guān)于C++的一些問題
這一回我自己都不知道應(yīng)該寫點(diǎn)什么好,或許今天的篇幅會(huì)比往常短很多。我說過,這不是C++的教程,因?yàn)槲疫沒有那個(gè)能力來教大家C++,我能做的,是分享一些學(xué)習(xí)的經(jīng)驗(yàn),以及教新手如何使用VC201*這個(gè)工具去練習(xí)和實(shí)踐其它C++教材上面的程序,如《C++Primer》等。今天說的是我學(xué)習(xí)和使用C++這些年來對(duì)C++的一些理解,這樣的日志其實(shí)是最難寫的,因?yàn)楸娍陔y調(diào),為什么這么說呢?同樣的一段音樂不同的人去傾聽都會(huì)有不同的感受,不同的心境去聽也會(huì)有不同的感覺。記得當(dāng)年我在聽雅尼的《IfIcouldtellyou》聽到的是無盡的傷感和無奈,而我的朋友卻怎么也聽不出來,呵,你去聽聽之后會(huì)有什么感覺?好,回歸正題吧。什么是編程
下面這段話我是從百度百科“編程”詞條復(fù)制過來的,不敢掠人之美:
編程就是讓計(jì)算機(jī)為解決某個(gè)問題而使用某種程序設(shè)計(jì)語言編寫
程序代碼,并最終得到結(jié)果的過程。為了使計(jì)算機(jī)能夠理解人的意圖,人類就必須要將需解決的問題的思路、方法、和手段通過計(jì)算機(jī)能夠理解的形式告訴計(jì)算機(jī),使得計(jì)算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計(jì)算機(jī)之間交流的過程就是編程。
這段話說的比較明白,我們?nèi)绻胱層?jì)算機(jī)按照我們想要的方式工作,那么我們必須給它命令,有的常見的任務(wù)已經(jīng)由操作系統(tǒng)幫助我們提供了,操作系統(tǒng)將一些簡(jiǎn)單的指令封裝成一個(gè)簡(jiǎn)單的操作,使得我們的操作更容易更簡(jiǎn)單,然而操作系統(tǒng)提供的操作始終是有限的,如果要擴(kuò)展計(jì)算機(jī)的軟件系統(tǒng),就需要編程了。什么是編程語言
如上所說,編程語言就是人類與計(jì)算機(jī)交流的橋梁。首先編程語言必須是計(jì)算機(jī)可以理解的或者是可以間接轉(zhuǎn)換成計(jì)算機(jī)可以理解的指令的東西。打個(gè)比方,如果你在一臺(tái)普通電腦面前站著,大叫道:“電腦,給哥把C盤根目錄下面的A文件拷貝到D盤根目錄下面去”。我猜想你就算叫上一天也沒用,因?yàn)槠胀ǖ碾娔X無法識(shí)別你的指令,這就算是對(duì)“機(jī)”彈琴吧。什么是編譯器
如上所說,編程語言是計(jì)算機(jī)可以直接理解的如機(jī)器碼或者可以間接轉(zhuǎn)換成計(jì)算機(jī)可以理解的指令的東西。那么C++就屬于后者,那么是什么把C++翻譯成計(jì)算機(jī)可以識(shí)別的指令的呢?這就是編譯器。什么是
C++
我不想說C++的歷史了,我想說,它是一門編程語言,它可以通過編譯器的翻譯成為計(jì)算機(jī)可以識(shí)別的指令。比如我們常見的C++代碼:inta=3+1;cout些新的類,引用一些新的命名空間,其實(shí)C++也是這樣的,要做更具體的事情,就需要除C++本身之外的更多東西才行。
因此,要用C++來做事情,除了C++的基本語法之外,還需要學(xué)習(xí)一些其它一些內(nèi)容如WindowsAPI、MFC、DirectX3DAPI等。C++、C#、Java
到底誰好?
對(duì)于這個(gè)問題,我想說的是:語言無貴賤,技術(shù)有高低。其實(shí)無論什么語言,它們?cè)谶@里都是編程語言,也許它們看起來不一樣,它們用起來也不一樣,它們的“翻譯”編譯器不一樣,但是它們的本質(zhì)作用就是要用它們自己的方式將我們?nèi)祟惖慕鉀Q問題的方法、思路和流程告知給計(jì)算機(jī)。這也就是為什么C++、C#、Java可以相互交互的原因。
每個(gè)語言就像江湖上的各門派的武功一樣,其實(shí)真的沒有高下之分,只有個(gè)人的修為,少林武功就一定強(qiáng)于武當(dāng)么?《碧血?jiǎng)Α分性兄静灰灿闷掌胀ㄍǖ奈逍腥瓝魸⒘藰s彩么?只是不同的武功在不同的條件下表現(xiàn)不同,他們各自占據(jù)了自己有利的地位罷了,以楊家槍法為例,或許二人比武它不厲害,但是征戰(zhàn)沙場(chǎng)估計(jì)是再適合不過了。
因此不要再糾結(jié)什么語言好,什么語言流行了,選擇一個(gè)自己喜歡的方向,然后調(diào)查好那個(gè)方向最常用最適合的語言,然后集中注意力堅(jiān)持的去學(xué)習(xí)它,這就好了。
今天的內(nèi)容就是這些,希望對(duì)大家有幫助。請(qǐng)大家務(wù)必好好學(xué)習(xí)C++教材,并使用VC201*好好演練,最好能夠舉一反三自己創(chuàng)造問題自己解決!多看看百度知道C/C++下面的那些問題,每解決一個(gè)那樣的問題,你自己也會(huì)進(jìn)步。
第四章VC201*中初學(xué)者常見錯(cuò)誤、警告和問題這一章將幫助大家解釋一些常見的錯(cuò)誤、警告和問題,幫助大家去理解和解決一些常見問題,并了解它的根本原因。iostream.h
與下面的代碼為什么在VC201*下面編譯不過去?#includeintmain(){
cout錯(cuò)誤信息:fatalerrorC1083:無法打開包括文件:“iostream.h”:Nosuchfileordirectory
造成這個(gè)錯(cuò)誤的原因在于歷史原因,在過去C++98標(biāo)準(zhǔn)尚未訂立的時(shí)候,C++的標(biāo)準(zhǔn)輸入輸出流確實(shí)是定義在這個(gè)文件里面的,這是C風(fēng)格的定義方法,隨著C++98標(biāo)準(zhǔn)的確定,iostream.h已經(jīng)被取消,至少在VC201*下面是這樣的,取而代之的是我們要用頭文件來代替,你甚至可以認(rèn)為是這樣定義的:namespacestd{
#include"iostream.h"}
因此我們可以簡(jiǎn)單的修改我們的HelloWorld。#includeusingnamespacestd;intmain(){
cout上面的strcpy會(huì)產(chǎn)生這個(gè)警告:
warningC4996:"strcpy":Thisfunctionorvariablemaybeunsafe.Considerusingstrcpy_sinstead.Todisabledeprecation,use_CRT_SECURE_NO_WARNINGS.Seeonlinehelpfordetails.
這是因?yàn)閂C從201*版本開始,微軟引入了一系列的安全加強(qiáng)的函數(shù)來增強(qiáng)CRT(C運(yùn)行時(shí)),這里對(duì)應(yīng)的是strcpy_s。_s意為safe的意思,同樣的道理,strcat也是同樣。因此要解決這個(gè)問題,我們可以用strcpy_s來替換strcpy,但是注意strcpy_s并非所有編譯器都提供,因此如果要跨編譯器,請(qǐng)采用錯(cuò)誤信息中所提示的方式,定義
_CRT_SECURE_NO_WARNINGS宏來掩耳盜鈴吧。另外注意并非所有的加強(qiáng)函數(shù)都是在屁股后面加_s,比如stricmp這個(gè)字符串比較函數(shù)的增強(qiáng)版名字是_stricmp。下面,用strcpy_s來更改程序:intmain(){
charsz[128]={0};
strcpy_s(sz,"HelloWorld!");coutreturn0;}
貌似沒什么問題吧?錯(cuò)了,如果你是按照我教你的方法創(chuàng)建的控制臺(tái)空工程的話,那么會(huì)有編譯錯(cuò)誤:
errorC2664:“MessageBoxW”:不能將參數(shù)2從“constchar[17]”轉(zhuǎn)換為“LPCWSTR”
這個(gè)問題太普遍了,幾乎所有的初學(xué)者都會(huì)遇到而且感到難以應(yīng)付,因?yàn)榘凑仗崾臼褂?LPCWSTR)強(qiáng)制轉(zhuǎn)型貌似并不能幫助我們解決問題,而且這個(gè)程序在VC6下面應(yīng)該是沒有任何問題的,那問題出現(xiàn)在哪里呢?問題在這里,請(qǐng)右鍵單擊解決方案瀏覽器下面的項(xiàng)目,屬性,問題的根本就是字符集問題,在VC6中,我們默認(rèn)使用的是多字節(jié)字符集,而現(xiàn)在我們默認(rèn)需要的是UNICODE字符集,簡(jiǎn)單的,我們把這個(gè)字符集改成多字節(jié)字符集這個(gè)問題就解決了:
再試試應(yīng)該就可以了吧?但是我并不推薦大家這么做,因?yàn)樽屪约旱某绦蜻m應(yīng)各種字符集是我們寫代碼的人義不容辭的義務(wù)。我們把程序改成下面這樣:#include#include#includeusingnamespacestd;
intmain(){
MessageBox(NULL,TEXT("你好HelloWorld!"),TEXT("Information"),0);MessageBox(NULL,_T("你好HelloWorld!"),_T("Information"),0);return0;}
用兩個(gè)宏TEXT或者_(dá)T都可以解決這個(gè)問題,它們兩個(gè)并沒有太大區(qū)別,也許區(qū)別在于前者是通過windows.h頭文件引入的,而_T是通過tchar.h引入的,我推薦大家使用_T和tchar.h,因?yàn)閠char.h還幫助我們引入了其它一些很有用的宏,比如_tcscpy_s,這個(gè)宏在使用UNICODE字符集的時(shí)候被替換成wcscpy_s,在使用多字節(jié)字符集的使用被替換成strcpy_s。關(guān)于這部分的內(nèi)容,請(qǐng)大家不要錯(cuò)過《Windows核心編程》的第二章(第四版或第五版都可以),以及《深入學(xué)習(xí)C++String2.1版》。它們都有提到。有人聽說_T可以把多字節(jié)字符串轉(zhuǎn)換成UNICODE,因此他寫了如下的代碼:constchar*pStr="haha哈哈";
MessageBox(NULL,_T(pStr),_T("Information"),0);
當(dāng)然,除非你運(yùn)氣好的抓狂,否則你是編譯不過去的,為什么呢?我們現(xiàn)在應(yīng)該知道對(duì)于"Hello"這樣的字符串,VC201*會(huì)默認(rèn)的將它視為constchar*,即多字節(jié)字符串,而L"Hello"前面有個(gè)L前綴的被視為UNICODE字符串,這和C#是有區(qū)別的,因?yàn)镃#的字符串總是被視為UNICODE,C++/CLI下面編譯器也會(huì)幫助我們做到這件事情,所以它們不需要L(C++/CLI兼容L這種寫法)。讓我們看看_T的定義吧:
#definewxCONCAT_HELPER(text,line)text##line
/*couldalreadybedefinedbytchar.h(it"squasistandard)*/#ifndef_T
#if!wxUSE_UNICODE#define_T(x)x#else/*Unicode*/
/*usewxCONCAT_HELPERsothatxcouldbeexpandedifit"samacro*/#define_T(x)wxCONCAT_HELPER(L,x)#endif/*ASCII/Unicode*/#endif/*!defined(_T)*/
_T在UNICODE下面最終會(huì)被替換成L##x。##是一個(gè)編譯預(yù)處理指令,意味著讓L和x貼在一起,比如L##"Hello"最終就是L"Hello",因此它可以把"Hello"轉(zhuǎn)換成UNICODE字符串。那為什么上面的程序不行呢?讓我們看看_T("pStr")會(huì)被替換成什么:L##pStr->LpStr,哦,LpStr是一個(gè)新的標(biāo)識(shí)符,如果你沒有定義過它,你當(dāng)然不能通過編譯啦。因此我們可以了解到_T這樣的宏只能處理直接的常量字符串,不能處理其它的情況。而我們上面演示的那種情況需要我們動(dòng)態(tài)的去轉(zhuǎn)換編碼,Windows有API可以幫助我們做到,C庫也有函數(shù)可以幫助我們。恰好我曾經(jīng)寫過這樣的代碼,歡迎大家參考:ASCII/UNICODE/UTF8字符串互相轉(zhuǎn)換的C++代碼
對(duì)于_T宏,再說一點(diǎn)東西,或許你會(huì)感到奇怪為什么_T不直接定義成#define_T(x)L##x,而要繞個(gè)圈子去調(diào)用wxCONCAT_HELPER呢?這實(shí)際上涉及到宏展開順序和截?cái)嗟膯栴}。在這里,我們需要說一個(gè)宏參數(shù)的概念,這很函數(shù)的參數(shù)是類似的,這里_T(x)的x就是宏參數(shù),好,記住下面一句話:
如果你定義的宏中使用了#或者是##的話,宏參數(shù)將不會(huì)被展開,也就是說_T(x)如果直接定義成L##x那么在下面這種情況就會(huì)出錯(cuò)(PS:#是給參數(shù)加引號(hào)的意思):
_T(__FUNCTION__),__FUNCTION__是一個(gè)預(yù)定義的宏,它代表了當(dāng)前函數(shù)的名字,這個(gè)展開會(huì)是什么呢?L__FUNCTION__。為什么間接調(diào)用wxCONCAT_HELPER就能得到正確的結(jié)果呢?因?yàn)楫?dāng)我們調(diào)用wxCONCAT_HELPER的時(shí)候,__FUNCTION__已經(jīng)被_T展開成了函數(shù)名。
說多了說多了,如果你覺得復(fù)雜可以暫時(shí)跳過這些東西,我只是順便說說。重定義的編譯錯(cuò)誤和鏈接錯(cuò)誤讓我們?cè)陧?xiàng)目里面再添加一個(gè)Test.h頭文件,方法是右擊解決方案中的項(xiàng)目,添加,新建項(xiàng),C++頭文件,名稱輸入test.h。然后我們?cè)趖est.h中輸入:/*#pragmaonce*/voidprint(){}
回到main.cpp中:#includeusingnamespacestd;#include"Test.h"#include"Test.h"intmain(){return0;}
編譯一下我們會(huì)得到重定義的編譯錯(cuò)誤:errorC2084:函數(shù)“voidprint(void)”已有主體
或許你會(huì)說,你引用(#include)了兩次,我沒你那么傻,我只引用一次不就好了么?是的。你聰明,但是是小聰明哈,因?yàn)槟悴荒鼙WC每個(gè)人都不去引用它。
這個(gè)問題演示的是#pragmaonce的用處,讓我們解開它的注釋。編譯成功!#pragmaonce的作用就在于防止頭文件被多次引用。你或許見過#ifndef__TEST_H__#define__TEST_H__代碼#endif
這樣的代碼,它們的作用是一樣的,如果你跟我一樣懶,那么就用#pragmaonce,如果你打算去沒有這個(gè)指令的編譯器上編譯代碼,那么還是用后面一種方式吧。
現(xiàn)在讓我們來見識(shí)一個(gè)對(duì)初學(xué)者稍微復(fù)雜一點(diǎn)的鏈接錯(cuò)誤,用創(chuàng)建main.cpp的方法再添加一個(gè)test.h頭文件,輸入#include"Test.h"即可。
讓我們?cè)倬幾g一次。
1>test.obj:errorLNK201*:"void__cdeclprint(void)"(?print@@YAXXZ)已經(jīng)在Main.obj中定義
1>e:\\documents\\visualstudio201*\\Projects\\HelloWorld\\Debug\\HelloWorld.exe:fatalerrorLNK1169:找到一個(gè)或多個(gè)多重定義的符號(hào)
如果說編譯錯(cuò)誤好找的話,鏈接錯(cuò)誤對(duì)于初學(xué)者來說就有點(diǎn)麻煩了,聰明的初學(xué)者會(huì)去Google、百度尋找答案,笨的初學(xué)者就會(huì)找所謂的高手、前輩問,而這些高手Or前輩未必有心情為你解釋。要解決這個(gè)錯(cuò)誤有無數(shù)種方法。1.內(nèi)聯(lián),把print聲明為內(nèi)聯(lián)函數(shù)。inlinevoidprint(){}
這個(gè)方法的好處是簡(jiǎn)單,壞處是局限性太強(qiáng),意味著你總是需要公開print的實(shí)現(xiàn),因?yàn)閮?nèi)聯(lián)函數(shù)必須在編譯時(shí)就知道實(shí)現(xiàn)才行。2.static,把print聲明為static函數(shù):staticvoidprint()。
這便告訴編譯器,哥是唯一的,而且哥只能被本編譯單元的代碼調(diào)用,這和extern是對(duì)應(yīng)的。簡(jiǎn)單來說,想要哥幫你做事,請(qǐng)先include哥聲明的頭文件,也就是#include"test.h"。3..h頭文件中只放聲明,實(shí)現(xiàn)放到.cpp中去。
現(xiàn)在test.h中只有voidprint();,而實(shí)現(xiàn)在test.cpp中:#include"Test.h"voidprint(){
inta=1;
cout
我把不同功能的代碼和文件放在不同的Filter下面,如何添加這樣的Filter呢?
這樣就可以添加篩選器了,默認(rèn)情況下VS為我們創(chuàng)建三個(gè)篩選器:頭文件、源文件和資源文件,實(shí)際上我們可以再增加很多。這樣區(qū)分開的好處就是各個(gè)功能的代碼被分開了,在文件很多的情況下不會(huì)造成混亂。如TextSearcher,它的搜索算法、軟件控制邏輯、自定義控件、GUI模塊、線程化操作都是分開的,這樣我可以很容易找到我想找的文件,而且還可以檢視自己的模塊劃分是否合理等等。
接下來推薦大家在項(xiàng)目資源瀏覽器中為不同的文件劃分目錄。
比如上圖將頭文件和源文件、資源圖標(biāo)文件、本地化文件和配置文件分開組織,這樣也是為了防止混亂。值得注意的是當(dāng)我們把文件用文件分開的時(shí)候,需要在項(xiàng)目屬性設(shè)置里面包含我們的子目錄,否則我們無法在源文件中直接用#include指令包含我們的頭文件。如下圖所示這樣的情況,如果不添加,無法找到頭文件。
如下圖所示,找到項(xiàng)目屬性中,C++,常規(guī)中把我們的子目錄作為附加路徑添加到“附加包含目錄”中。
使用SVN或其它源代碼管理工具管理我們的項(xiàng)目
如果你打算寫一個(gè)比較大一點(diǎn)的項(xiàng)目,我推薦你使用源代碼管理工具來管理你的C++項(xiàng)目,你可以選擇SVN,也可以選擇其它的,我推薦SVN,因?yàn)楹?jiǎn)單容易上手。當(dāng)你在做一個(gè)很復(fù)雜的東西的時(shí)候,花了兩三天的時(shí)間去做修改,不過后來發(fā)現(xiàn)這個(gè)修改并不合適,想還原到三天以前,如果你沒有用源代碼管理工具管理自己的項(xiàng)目也沒有自己手動(dòng)的備份,那恭喜你,你得開始人肉還原了,這是多么悲劇的一件事情啊,然而如果你使用了SVN管理的話,只需要在三天前開始修改前的最后一次穩(wěn)定版本Commit一次,三天之后如果要還原,只需要使用工具Revert就好了,而且不但可以回到三天前的版本,你甚至可以回到以前每一次Commit的版本,(⊙o⊙)哇,這是多么好的工具!要使用SVN,首先需要SVN客戶端,SVN服務(wù)器是可選的。我推薦大家使用TortoiseSVN這個(gè)SVN客戶端,因?yàn)樗?jiǎn)單易用、免費(fèi),支持Windows32Bit、64Bit,你可以去他們的官方網(wǎng)站下載,地址點(diǎn)我。有了這個(gè)工具當(dāng)然還不夠,為了讓我們的SVN跟VS201*結(jié)合的更緊密,我們需要再下載一個(gè)SVNForVS的插件,我強(qiáng)烈推薦你使用它,因?yàn)樗卜浅:?jiǎn)單易用,下載地址點(diǎn)我。最新版是支持VS201*的。當(dāng)你裝了這個(gè)插件的時(shí)候,如果你的項(xiàng)目是在SVN的管理之下,那么你的項(xiàng)目看起來會(huì)一些不同:
看到文件左邊的勾了嗎?灰色的勾表示正常,而橙色的勾表示已經(jīng)更改了,而PendingChanges則告訴我們哪些文件時(shí)新加的,哪些文件被改過了,如果要還原的話,只需要選擇該文件,右鍵點(diǎn)擊,Revert就好了:
如果你已經(jīng)安裝好了AnkhSVN插件但是又看不到的話,那么請(qǐng)檢查下系統(tǒng)選項(xiàng)卡里面是否選擇了它作為默認(rèn)的源代碼管理工具:
回過頭去繼續(xù)說SVN,當(dāng)我們安裝好TortoiseSVN之后(安裝后可能需要重啟),我們?cè)谫Y源管理器中點(diǎn)擊右鍵的時(shí)候就能看到它的菜單了:
雖然TortoiseSVN有中文語言包,但是我推薦大家使用英文的,就像古詩一定要用中文來表達(dá)一樣,沒有比英語單詞表達(dá)SVN項(xiàng)目管理更恰當(dāng)?shù)脑~了。
SVNCheckOut可以讓你獲取其它地方SVN服務(wù)器上面的某個(gè)項(xiàng)目的源碼,當(dāng)然,前提是你要有權(quán)限才行,現(xiàn)在讓我們?cè)囋。隨便找個(gè)盤符如F盤,點(diǎn)右鍵,選擇SVNCheckOut,然后UrlofRepository中輸入svn://這個(gè)地址,其它的不變,點(diǎn)擊OK。如圖所示:
如果不出意外你能看到:
如果你看到這個(gè)畫面說明你已經(jīng)CheckOut成功了,那么恭喜你,你已經(jīng)取到了TextSearcher的源碼,當(dāng)然要說一點(diǎn)的是,這個(gè)源碼可能你取到之后編譯不了,因?yàn)檫有另外一些依賴項(xiàng)如dbsoft、boost、wxWidgets并不在這個(gè)SVN上面。
這樣大家就可以去一些開源的網(wǎng)站上面Check你想要的東西了,哈哈。推薦大家去這個(gè)網(wǎng)站找自己感興趣的代碼CheckOut:
現(xiàn)在我們說如何管理自己的項(xiàng)目,大家可以像我一樣去一些提供免費(fèi)SVN服務(wù)器服務(wù)的網(wǎng)站上面注冊(cè)一個(gè)賬號(hào)建立項(xiàng)目就好了,比如說我使用的這個(gè),這個(gè)畢竟是國(guó)內(nèi)的,另外上面的sourceforge.net也可以。當(dāng)你注冊(cè)建立項(xiàng)目成功之后就可以通過菜單Import把需要導(dǎo)入的東西導(dǎo)入到SVN服務(wù)器了:
導(dǎo)入界面的地址欄輸入我們的SVN服務(wù)器地址即可,類似于:svn://。導(dǎo)出的時(shí)候記得輸入日志。除了可以導(dǎo)入SVN服務(wù)器之外,我們還可以使用文件協(xié)議在自己的電腦上管理我們的代碼,如果你不需要在多臺(tái)電腦上面共同維護(hù)這個(gè)項(xiàng)目的話。
讓我們隨便找個(gè)地方新建一個(gè)文件夾,如D:\\TestSVNServer這個(gè)文件夾,然后對(duì)著這個(gè)新建的文件夾點(diǎn)右鍵,選擇SVN>Createrepositoryhere,OK,你的本地SVN服務(wù)器已經(jīng)建好了。如果創(chuàng)建成功,你會(huì)發(fā)現(xiàn)這個(gè)文件夾里面多了好多東西:
沒關(guān)系,這是SVN服務(wù)必須要的一些東西,現(xiàn)在讓我們使用文件協(xié)議導(dǎo)入我們的項(xiàng)目到該SVN服務(wù)器中,找到我們要導(dǎo)入的項(xiàng)目,跟導(dǎo)入網(wǎng)絡(luò)上的SVN服務(wù)器一樣,右擊項(xiàng)目文件夾,SVN>Import。在Import界面中這樣填:
不出意外你會(huì)導(dǎo)入成功,那么現(xiàn)在我們需要去其它地方重新獲取這些東西了,換個(gè)地方,比如F盤根目錄,選擇SVNCheckOut,然后地址輸入剛才導(dǎo)入的地址:
友情提示:本文中關(guān)于《《測(cè)繪生產(chǎn)質(zhì)量管理規(guī)定》完全版》給出的范例僅供您參考拓展思維使用,《測(cè)繪生產(chǎn)質(zhì)量管理規(guī)定》完全版:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。