如何對(duì)C++源程序進(jìn)行編譯
下面的文章詳細(xì)對(duì)C++源程序進(jìn)行大致說(shuō)明介紹,在學(xué)習(xí)C++源程序之前首先要了解下什么是C++?對(duì)C++是基于C語(yǔ)言發(fā)展起來(lái)的一種新的程序設(shè)計(jì)語(yǔ)言。下面進(jìn)行學(xué)習(xí)剖析。
有的編譯系統(tǒng)要求在行尾加續(xù)行符(“\ ”) C++程序的實(shí)現(xiàn)C++源程序的實(shí)現(xiàn)與其他高級(jí)語(yǔ)言源程序?qū)崿F(xiàn)的原理是一樣的。一般都要經(jīng)過(guò)編輯、編譯、運(yùn)行。其中最要的是編譯過(guò)程,C++是以編譯方式實(shí)現(xiàn)的高級(jí)語(yǔ)言。
C++程序的實(shí)現(xiàn),必須要使用某種C++語(yǔ)言的編譯器對(duì)程序進(jìn)行編譯。編譯器的功能是將程序的源代碼轉(zhuǎn)換成為機(jī)器代碼的形式,稱為目標(biāo)代碼;然后,再使目標(biāo)代碼進(jìn)行連接,生成可執(zhí)行文件。
該過(guò)程可分為三個(gè)子過(guò)程:預(yù)處理過(guò)程、編譯過(guò)程(詞法分析、語(yǔ)法分析、符號(hào)表、錯(cuò)誤處理程序、生成目標(biāo)代碼)、連接過(guò)程。Visual C++ 6.0版本是當(dāng)前國(guó)內(nèi)比較流行的一種C++編譯系統(tǒng)。
總的來(lái)說(shuō),C++和C#、Java的區(qū)別集中在以下幾點(diǎn):
(1)C#、Java代碼編譯后(形成中間代碼)是在虛擬機(jī)上執(zhí)行的。C++則不是。
(2)C#、Java語(yǔ)言相對(duì)于C++語(yǔ)言來(lái)說(shuō)較為簡(jiǎn)單,比較容易上手。C++的語(yǔ)法特性多、復(fù)雜,較難掌握。
(3)C++語(yǔ)言本身是一個(gè)標(biāo)準(zhǔn),各種實(shí)現(xiàn)之間有區(qū)別,對(duì)標(biāo)準(zhǔn)的理解、執(zhí)行程度也不同。而C#、Java語(yǔ)言是由商業(yè)公司掌握的,在這方面很少有問(wèn)題。
(4)C#、Java是直接面向應(yīng)用的,各種標(biāo)準(zhǔn)、模型都很成熟。而C++的各種庫(kù)在不同的C++編譯器實(shí)現(xiàn)上可能遇到一些問(wèn)題。
(5)三者都是面向?qū)ο蟮摹?/P>
C#、Java比C++更為徹底一些。有觀點(diǎn)認(rèn)為C#、Java是徹底地面向?qū)ο蟮恼Z(yǔ)言,這種說(shuō)法不妥,因?yàn)閷?duì)于面向?qū)ο蟮恼Z(yǔ)言,并沒有一個(gè)特定的標(biāo)準(zhǔn),例如也有觀點(diǎn)認(rèn)為最近很流行的Ruby語(yǔ)言比C#、Java更加面向?qū)ο蟆?/P>
(6)C++擁有很多現(xiàn)代的、令人激動(dòng)的語(yǔ)言特性,例如模板、泛型編程等。在這一點(diǎn)上,C#和Java也在迅速跟進(jìn)。
C++是一門精致的、藝術(shù)的編程語(yǔ)言。
筆者認(rèn)為,C++源程序也是所有已知程序設(shè)計(jì)語(yǔ)言中最靈活、最難學(xué)的語(yǔ)言之一。學(xué)好C++基本上也意味著可以學(xué)好任一種其他的高級(jí)程序設(shè)計(jì)語(yǔ)言。圖1.1對(duì)C、C++、C#、Java這4種語(yǔ)言的幾個(gè)方面做了比較。
寫程序首先希望是程序能正確執(zhí)行,其次是效率能夠被接受,再次就是易于維護(hù)。C++是一個(gè)難學(xué)易用的語(yǔ)言。C++提供了太多可選擇的東西,而且使用使用C++來(lái)寫程序可以有四種思考模式:基于過(guò)程、基于對(duì)象、面向?qū)ο蠛头盒汀?/P>
我們使用一種語(yǔ)言來(lái)寫程序,并不意味著就是使用語(yǔ)言本身,換句話說(shuō),我們更多的時(shí)候是使用程序庫(kù)在寫程序。比如MFC、STL、ATL、VCL等等。其中要使用C++來(lái)寫出結(jié)構(gòu)優(yōu)美、性能卓越、代碼簡(jiǎn)潔、易于維護(hù)的代碼,首推C++標(biāo)準(zhǔn)程序庫(kù)。
STL對(duì)效率做了嚴(yán)格的要求,而且使用STL寫出來(lái)的程序簡(jiǎn)潔美觀(前段時(shí)間我特意貼了一個(gè)要求對(duì)若干整數(shù)進(jìn)行排序的帖子,其實(shí)目的就是用來(lái)展示STL的簡(jiǎn)潔優(yōu)雅)。一旦習(xí)慣使用泛型思維來(lái)考慮問(wèn)題,我們能夠充分體會(huì)到模板帶來(lái)的美!
對(duì)于數(shù)值計(jì)算來(lái)說(shuō),C++源程序可以充分滿足現(xiàn)代化服務(wù)和商業(yè)計(jì)算對(duì)數(shù)據(jù)、信息的即時(shí)回應(yīng)的要求。
我覺得學(xué)好一門語(yǔ)言最重要的就是實(shí)踐。也就是多“寫”!“工程經(jīng)驗(yàn)之積累”對(duì)已具有一段開發(fā)時(shí)間的程序員而言,非常重要!只有在不斷的積累中,我們才能漸漸體會(huì)到C++源程序中的一些背后的東西。
【編輯推薦】