教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

C++培訓(xùn)之CC++混合編程技術(shù)揭秘

更新時(shí)間:2015年12月28日15時(shí)55分 來源:傳智播客C/C++學(xué)科 瀏覽次數(shù):

  1. C/C++語言概述

    是一種通用編程語言,廣泛用于系統(tǒng)軟件和應(yīng)用程序的開發(fā)。為了移植和開發(fā)UNIX操作系統(tǒng),由丹尼斯里奇和肯湯普遜與1969年到1973年間以B語言為基礎(chǔ)在貝爾實(shí)驗(yàn)室設(shè)計(jì)和開發(fā)出來的。

    語言具有高效、靈活、功能豐富、表達(dá)力強(qiáng)和較高可移植性等特點(diǎn),在程序員中備受青睞,成為最近25年使用最為廣泛的編程語言。

    目前,C語言編譯器普遍存在于各種不同的操作系統(tǒng)中,例如Microsoft Windows, Mac OS X, Linux,Unix等。C語言的設(shè)計(jì)影響了眾多后來的編程語言,例如C++、Objective-C、Java、C#等。

    是一種一種廣泛使用的計(jì)算機(jī)程序設(shè)計(jì)語言。它是一種通用程序設(shè)計(jì)語言,靜態(tài)數(shù)據(jù)類型檢查,支持多重編程范式,例如過程化程序設(shè)計(jì)、數(shù)據(jù)抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)、基于原則設(shè)計(jì)等。

    貝爾實(shí)驗(yàn)室的比雅尼·斯特勞斯特魯普博士在20世紀(jì)80年代發(fā)明并實(shí)現(xiàn)了C++。

    語言發(fā)展大概可以分為三個(gè)階段:

    第一階段從80年代到1995年。這一階段C++語言基本上是傳統(tǒng)類型上的面向?qū)ο笳Z言,并且憑借著接近C語言的效率,在工業(yè)界使用的開發(fā)語言中占據(jù)了相當(dāng)大份額;

    第二階段從1995年到2000年,這一階段由于標(biāo)準(zhǔn)模板庫(kù)(STL)和后來的Boost等程序庫(kù)的出現(xiàn),泛型程序設(shè)計(jì)在C++中占據(jù)了越來越多的比重性。當(dāng)然,同時(shí)由于Java、C#等語言的出現(xiàn)和硬件價(jià)格的大規(guī)模下降,C++受到了一定的沖擊;

    第三階段從2000年至今,由于以Loki、MPL等程序庫(kù)為代表的產(chǎn)生式編程和模板元編程的出現(xiàn),C++出現(xiàn)了發(fā)展歷史上又一個(gè)新的高峰,這些新技術(shù)的出現(xiàn)以及和原有技術(shù)的融合,使C++已經(jīng)成為當(dāng)今主流程序設(shè)計(jì)語言中最復(fù)雜的一員。

    誠(chéng)然編程語言技術(shù)演進(jìn)很快,然而 C/C++作為通用語言擁有極其強(qiáng)大的生命力,這正是C/C++在編程語言排行榜上使用能夠傲視群雄的關(guān)鍵所在。

    C++的函數(shù)重載的本質(zhì)

    如果了解C的朋友應(yīng)該知道C語言沒有函數(shù)重載的概念,在C語言中函數(shù)名不能相同;

    那么C++脫胎于C語言,實(shí)現(xiàn)重載的本質(zhì)是什么呢?

    下面寫一個(gè)簡(jiǎn)單的C語言代碼并查看符號(hào)表當(dāng)中的標(biāo)識(shí)

    下面我們稍微修改一下成為C++代碼

    查看符號(hào)表發(fā)現(xiàn)符號(hào)表中名字原來被改變了

    C++中調(diào)用C語言

    從上一章節(jié)可以看出來,C++語言和C語言對(duì)符號(hào)表有不同的處理。由于C++兼容C語言的特性,所以C++提供了能夠跨語言調(diào)用的方法去調(diào)用C語言函數(shù)。

    那么這個(gè)利器就是----------extern “C”關(guān)鍵字,也就是說在C中不存在這樣一個(gè)關(guān)鍵字。

    那么關(guān)鍵字的用途就是用以表示該函數(shù)是C風(fēng)格的函數(shù),這樣最終在鏈接的時(shí)候會(huì)去尋找C相應(yīng)處理的符號(hào)表而不會(huì)導(dǎo)致找不到標(biāo)識(shí)。

    首先以extern “C”修飾C函數(shù)的聲明

    然后在源代碼中實(shí)現(xiàn)相應(yīng)的函數(shù)代碼

    先只編譯test_header.c

    將調(diào)用程序編譯并且和上一步生成的二進(jìn)制文件進(jìn)行鏈接

    執(zhí)行

    本文版權(quán)歸傳智播客C++培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!

    作者:傳智播客C/C++培訓(xùn)學(xué)院

    首發(fā):http://www.xamj520.com/c/

0 分享到:
和我們?cè)诰€交談!