如何更好的實(shí)現(xiàn)C++編譯
在前面小節(jié)中已經(jīng)提到,C++只是一個(gè)ISO標(biāo)準(zhǔn),標(biāo)準(zhǔn)中規(guī)定了C++的基本語法以及這些語法對(duì)應(yīng)的語義(可以簡單理解為語法的含義)。要將C++真正地應(yīng)用在實(shí)際的程序設(shè)計(jì)中,只有一個(gè)標(biāo)準(zhǔn)是不夠的。
好在已經(jīng)有很多商業(yè)公司、開源組織、基金會(huì)甚至是個(gè)人,遵照C++標(biāo)準(zhǔn)在不同的平臺(tái)上進(jìn)行了實(shí)現(xiàn)。這里的遵照并不是***地遵照C++標(biāo)準(zhǔn),主要原因有以下幾點(diǎn):
(1)歷史原因。某些編譯器在實(shí)現(xiàn)的時(shí)候,C++正式標(biāo)準(zhǔn)還沒有出來,或者是按照較老的標(biāo)準(zhǔn)實(shí)現(xiàn)的(C++標(biāo)準(zhǔn)也是在更新的)。
(2)平臺(tái)原因。某些平臺(tái)上實(shí)現(xiàn)標(biāo)準(zhǔn)中的某些特性比較困難,或者根本不需要這些特性。
(3)出于商業(yè)目的。某些商業(yè)公司實(shí)現(xiàn)的時(shí)候可能會(huì)添加一些其認(rèn)為可行的或者更加好的特性。
(4)其他技術(shù)原因。
無論如何,現(xiàn)在可用的C++編譯器實(shí)現(xiàn)已經(jīng)很豐富了,在Windows平臺(tái)上的實(shí)現(xiàn)就有若干種,比較常用的有Visual C++ 6.0附帶的C++編譯器實(shí)現(xiàn),和Borland C++ Builder附帶的C++編譯器實(shí)現(xiàn)。就對(duì)標(biāo)準(zhǔn)的執(zhí)行程度來看,后者要好一些。#t#
提示:Visual C++和Borland C++ Builder是Windows操作系統(tǒng)上常見的C++開發(fā)工具。前者是微軟公司出品的,應(yīng)用廣泛。本書的主要內(nèi)容就是講述如何使用Visual C++ 6.0進(jìn)行常見的Windows程序設(shè)計(jì)。Visual C++ 6.0除了包含了一個(gè)C++編譯器之外,還包含了其他的一些可視化開發(fā)工具、輔助工具,以及一些C++庫等,這些都將在本書的相關(guān)章節(jié)進(jìn)行介紹。
1.3.2 Visual C++ 6.0的開發(fā)過程
Visual C++ 6.0編譯器負(fù)責(zé)將C++源代碼編譯成匯編文件,轉(zhuǎn)換為中間文件(obj文件),然后使用連接器將相關(guān)的中間文件連接在一起,生成可執(zhí)行的二進(jìn)制文件。其過程如下:
(1)源程序經(jīng)過預(yù)處理后交給編譯器。
(2)如果代碼無誤,編譯器將代碼生成匯編程序,再生成若干個(gè)目標(biāo)程序(obj文件)。
(3)鏈接器負(fù)責(zé)將目標(biāo)程序進(jìn)行連接,生成可執(zhí)行的程序。
但是這并不意味著C++即將消亡(這樣的言論很多)。不可否認(rèn)的是C++在C#、Java的進(jìn)攻下,丟失了一些領(lǐng)域,但是C++仍然在普遍使用,很重要的原因就是因?yàn)镃++既保持了C語言級(jí)別的效率(某些情況下例外),又加入了面向?qū)ο蟮奶匦浴?/P>