久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

什么是C語(yǔ)言的可移植,?

 西北望msm66g9f 2018-04-28

什么是可移植?

如何才能可移植?

C語(yǔ)言是如何做到可移植的?


對(duì)于初學(xué)者,可移植可能是一個(gè)經(jīng)常遇到卻很神秘的詞,。今天,,我想通過(guò)這篇文章來(lái)表達(dá)對(duì)于可移植性的一些想法。


首先,,在這里鋪墊一下,。學(xué)過(guò)Win32程序設(shè)計(jì)的人肯定都聽(tīng)說(shuō)過(guò)API(Application Program Interface)。我就先說(shuō)說(shuō)API,,高手繞過(guò),。API對(duì)于程序員來(lái)說(shuō)就是系統(tǒng)提供的接口,,任何涉及系統(tǒng)調(diào)用都要通過(guò)API來(lái)完成,。對(duì)于不同的操作系統(tǒng)都有不同的一套API,也就是說(shuō)對(duì)于不同的操作系統(tǒng)系統(tǒng)調(diào)用的接口是完全不同的,。所以在API層我們是不能移植的,。


下面我就來(lái)說(shuō)說(shuō)可移植,可移植顧名思義就是可以從一個(gè)平臺(tái)移植到另外一個(gè)平臺(tái),,但是大家一定要清楚,,移植是基于操作系統(tǒng)的,。但是這個(gè)時(shí)候,我們需要注意一點(diǎn):基于各種操作系統(tǒng)平臺(tái)不同,,應(yīng)用程序在二級(jí)制級(jí)別是不能直接移植的,。我們只能在代碼層去思考可移植問(wèn)題,在API層面上由于各個(gè)操作系統(tǒng)的命名規(guī)范,、系統(tǒng)調(diào)用等自身原因,,在API層面上實(shí)現(xiàn)可移植也是不大可能的。那怎么才能實(shí)現(xiàn)可移植呢?


我們首先來(lái)看看現(xiàn)在主流的Windows和Linux平臺(tái)下代碼可移植性,。有什么辦法解決這個(gè)問(wèn)題呢?


答案是:在各個(gè)平臺(tái)之間,,基于大部分需求抽象出一個(gè)中間層。在中間層中,,中間層用了屏蔽底層細(xì)節(jié),,在我們程序員看來(lái)C言語(yǔ)庫(kù)就是這樣一個(gè)中間層的作用。在各個(gè)平臺(tái)下,,我們默認(rèn)C標(biāo)準(zhǔn)庫(kù)中的函數(shù)都是一樣的,,這樣基本可以實(shí)現(xiàn)可移植。但是對(duì)于C庫(kù)本身而言,,在各種操作系統(tǒng)平臺(tái)下其內(nèi)部實(shí)現(xiàn)是完全不同的,,也就是說(shuō)C庫(kù)封裝了操作系統(tǒng)API在其內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。


因此,,C語(yǔ)言提供了我們?cè)诖a級(jí)的可移植性,,即這種可移植是通過(guò)C語(yǔ)言這個(gè)中間層來(lái)完成的。


當(dāng)然,,大家都可以看出上面的可移植是有條件的,,C語(yǔ)言本身不能實(shí)現(xiàn)完全的可移植,為什么呢?因?yàn)?,在我們程序中,,我們?jīng)常會(huì)調(diào)用系統(tǒng)API,由于這些API在C語(yǔ)言中沒(méi)有對(duì)其封裝,,所以我們只能用使用其原始的API,,對(duì)于原始的API在各個(gè)操作系統(tǒng)中他們命名不同,就不能跨平臺(tái)移植,。所以,,我們要寫(xiě)出完完全全的跨平臺(tái)的程序,還是需要其他的一些手段,。例如在我們的代碼中下功夫,。以下代碼可以幫助我們實(shí)現(xiàn)各平臺(tái)之間的可移植:

#ifdef _WINDOWS_


CreateThread(); //windows下線程的創(chuàng)建


#else


Pthread_create(); //Linux下線程的創(chuàng)建


#endif


對(duì)于頭文件,也使用同樣的預(yù)編譯宏來(lái)實(shí)現(xiàn),。如:


#ifndef _WINDOWS_


#include 


#else


#include 


#endif


這樣就可以實(shí)現(xiàn)代碼的可移植了,。在編譯的時(shí)候只要通過(guò)#define就可以選擇在那個(gè)平臺(tái)下完成程序的編譯,。


綜上所述,我們都是將C,,C++等各種語(yǔ)言當(dāng)作中間層,,以實(shí)現(xiàn)其一定程度上的可移植。如今,,語(yǔ)言的跨平臺(tái)的程序都是以這樣的方式實(shí)現(xiàn)的,。但是在不同的平臺(tái)下,仍需要重新編譯,。


1.圖文并茂,了解ARM體系結(jié)構(gòu)與編程模型

2.所有操作系統(tǒng)的內(nèi)核幾乎都是用C語(yǔ)言寫(xiě)的,,原因何在?

3.IC行業(yè)薪資排序:軟件架構(gòu)師,、算法工程師,、FPGA工程師、嵌入式開(kāi)發(fā),。,。。

4.招不到電子工程師,,這鍋誰(shuí)來(lái)背,?

5.三年數(shù)電五年模電,硬件工程師到底該如何發(fā)展,?

6.人工智能與人類(lèi)智慧的較量

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多