国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 2755|回復(fù): 0
打印 上一主題 下一主題

對于C語言可移植性的一些思考

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2018-4-29 10:52:29 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: 嵌入式 , C語言、移植
相信學(xué)過C語言的同學(xué),都會在書中看到C語言特點(diǎn)一定有:可移植性。

但是什么是可移植?
如何才能可移植?
C語言是如何做到可移植的?

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

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

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

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

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

因此,C語言提供了我們在代碼級的可移植性,即這種可移植是通過C語言這個中間層來完成的。

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

#ifdef _WINDOWS_

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

#else

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

#endif

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

#ifndef _WINDOWS_

#include

#else

#include

#endif

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

綜上所述,我們都是將C,C++等各種語言當(dāng)作中間層,以實(shí)現(xiàn)其一定程度上的可移植。如今,語言的跨平臺的程序都是以這樣的方式實(shí)現(xiàn)的。但是在不同的平臺下,仍需要重新編譯。
宋工企鵝號:35--24-65--90-88   Tel/WX:173--17--95--19--08
以下課程可免費(fèi)試聽C語言、電子PCBSTM32、Linux、FPGA、JAVA、安卓等。
想學(xué)習(xí)的你和我聯(lián)系預(yù)約就可以免費(fèi)聽課了


您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区日韩精品 | 欧美黄色片在线 | 羞羞影院免费观看网址在线 | 在线观看麻豆精品国产不卡 | 终极教师电视剧 | 亚洲乱码在线视频 | 中文字幕国产一区 | 黄色手机看片 | 岛国在线最新 | 欧美视频一区二区三区在线观看 | 福利一区国产 | 久久久久女人精品毛片 | 午夜视频网站 | 一级毛片一级毛片免费毛片 | 成人欧美视频 | 伦理不卡| 国产91视频 | 三级在线观看网站 | 在线观看黄色网页 | 亚洲系列国产系列 | 中文字幕在线永久视频 | 又色又爽又黄的网站 | 亚洲男人第一av网站 | 国产精品视频免费观看 | 亚洲国产欧洲精品路线久久 | 国产一级片在线 | 综合五月婷婷 | 久久久久久久国产 | 麻豆国产精品免费视频 | 日韩欧美在线一级一中文字暮 | 国产欧美日韩在线播放 | 青青青国产在线观看 | 新四虎 | 亚洲国产中文字幕 | 99影视网 | 五月婷婷之婷婷 | 日本www在线观看 | 青草资源视频在线高清观看 | 一道本高清香蕉网 | 久久亚洲精品国产精品婷婷 | 一个人www在线高清观看 |