在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

5RJg_mcuworld ? 來(lái)源:未知 ? 作者:伍文輝 ? 2018-03-29 14:41 ? 次閱讀

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

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

首先,在這里鋪墊一下。學(xué)過(guò)Win32程序設(shè)計(jì)的人肯定都聽說(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)移植。所以,我們要寫出完完全全的跨平臺(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)下,仍需要重新編譯。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7623

    瀏覽量

    139365
  • 可移植性
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7659

原文標(biāo)題:什么是C語(yǔ)言的可移植?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    移植密碼登錄系統(tǒng)

    密碼登錄系統(tǒng),labview,移植
    發(fā)表于 08-18 17:41

    移植密碼登錄系統(tǒng),

    移植密碼登錄系統(tǒng),
    發(fā)表于 08-18 17:55

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

    什么是移植?如何才能移植?C語(yǔ)言如何做到
    發(fā)表于 03-22 13:07

    如何使用抽象層設(shè)計(jì)移植代碼?

    移植代碼有什么重要性如何使用抽象層設(shè)計(jì)移植代碼求一種移植軟件的設(shè)計(jì)方案
    發(fā)表于 04-26 06:57

    如何實(shí)現(xiàn)Ozone項(xiàng)目移植?

    找到源文件。本文將解析如何實(shí)現(xiàn)Ozone項(xiàng)目(.jdebug)移植。1、解決方式在Ozone中,使用項(xiàng)目向?qū)陆?xiàng)目時(shí)(Ozone調(diào)試器使用攻略),如果導(dǎo)入的elf文件和對(duì)應(yīng)的源文件位于同一文件夾中
    發(fā)表于 01-05 13:56

    μC/OSII在Microchip MCU上的移植

    μC/OSⅡ是一個(gè)完整的,移植、固化、裁減的搶占式實(shí)時(shí)多任務(wù)內(nèi)核。本文著重介紹了μC/OSⅡ嵌入式操作系統(tǒng)內(nèi)核在Microchip PIC18F452 單片機(jī)上的
    發(fā)表于 07-30 14:16 ?55次下載

    移植µC/OS-Ⅱ教程

    這一章介紹如何將µC/OS-Ⅱ移植到不同的處理器上。所謂移植,就是使一個(gè)實(shí)時(shí)內(nèi)核能在某個(gè)微處理器或微控制器上運(yùn)行。為了方便移植,大部分的µ
    發(fā)表于 09-29 10:08 ?31次下載

    嵌入式系統(tǒng)C語(yǔ)言位操作的移植與優(yōu)化

    嵌入式系統(tǒng)C語(yǔ)言位操作的移植與優(yōu)化   單片機(jī)的應(yīng)用越來(lái)越廣泛,種類也越來(lái)越多。由于嵌入式C語(yǔ)言可讀性強(qiáng)、
    發(fā)表于 03-29 15:15 ?1169次閱讀

    SimpleLink SDK的移植示例

    1.6 SimpleLink MCU平臺(tái)SDK代碼可移植
    的頭像 發(fā)表于 04-28 06:20 ?3636次閱讀
    SimpleLink SDK的<b class='flag-5'>可</b><b class='flag-5'>移植</b>示例

    STM32實(shí)用的按鍵處理程序移植的函數(shù)免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32實(shí)用的按鍵處理程序移植的函數(shù)免費(fèi)下載
    發(fā)表于 04-28 08:00 ?3次下載
    STM32實(shí)用的按鍵處理程序<b class='flag-5'>可</b><b class='flag-5'>移植</b>的函數(shù)免費(fèi)下載

    PETSc科學(xué)計(jì)算移植擴(kuò)展工具包的用戶手冊(cè)免費(fèi)下載

    Portable, ExtensibleToolkit for Scientific Computation科學(xué)計(jì)算移植擴(kuò)展工具包。PETSc(Portable, Extensible
    發(fā)表于 10-09 08:00 ?2次下載
    PETSc科學(xué)計(jì)算<b class='flag-5'>可</b><b class='flag-5'>移植</b>擴(kuò)展工具包的用戶手冊(cè)免費(fèi)下載

    采用什么方法減少設(shè)計(jì)移植軟件的成本

    在當(dāng)今的軟件設(shè)計(jì)中,為了在不同的產(chǎn)品線上重復(fù)使用相同的代碼,需要將代碼從一個(gè)平臺(tái)移植到另一個(gè)平臺(tái)。雖然這種代碼的重復(fù)利用非常重要,但是很少有人討論該采用何種方法來(lái)減少設(shè)計(jì)移植軟件的成本,本文將介紹一種可行的設(shè)計(jì)方案。
    的頭像 發(fā)表于 09-19 17:00 ?1641次閱讀
    采用什么方法減少設(shè)計(jì)<b class='flag-5'>可</b><b class='flag-5'>移植</b>軟件的成本

    STM32移植使用mbedtls-2.24.0

    TLS(以前稱為PolarSSL)是TLS和SSL協(xié)議的實(shí)現(xiàn),并且需要相應(yīng)的加密算法和支持代碼。這是雙重許可與Apache許可證 2.0版(與GPLv2許可也)。網(wǎng)站上指出,mbed TLS的目標(biāo)是“易于理解,使用,集成和擴(kuò)展”。核心SSL庫(kù)用C編程
    發(fā)表于 12-31 19:17 ?14次下載
    STM32<b class='flag-5'>移植</b>使用mbedtls-2.24.0

    qt虛擬鍵盤源代碼移植到工程中

    qt虛擬鍵盤源代碼,移植到工程中
    發(fā)表于 09-27 11:51 ?11次下載

    請(qǐng)問(wèn)如何將C語(yǔ)言算法移植到FPGA上?

    確定算法:首先,你需要確保要移植C語(yǔ)言算法是合適的。FPGA適合并行計(jì)算和高度定制的應(yīng)用。因此,你需要選擇一個(gè)適合FPGA實(shí)現(xiàn)的算法。
    發(fā)表于 09-12 17:20 ?2333次閱讀
    主站蜘蛛池模板: 色老头一区二区三区在线观看 | 国产黄mmd在线观看免费 | 特级黄| gav久久 | 黄色自拍偷拍 | 黄色在线播放网站 | 免费午夜影片在线观看影院 | www.天堂.com | 国产综合图片 | 欧美黄色大片免费观看 | 欧美黑人性受xxxx精品 | 国模龙园园私拍337p | 日本一本视频 | 97se狠狠狠狠狼亚洲综合网 | 男女视频免费 | 米奇久久 | 天天天天天操 | 亚洲精品福利网站 | 美女啪啪91 | 天天干天天爱天天操 | 精品欧美小视频在线观看 | 大美女久久久久久j久久 | 日本黄色免费 | 天天综合天天射 | gav久久| 日本级毛片免费观看 | 午夜视频h | 精品国产免费久久久久久婷婷 | www.午夜剧场| 四虎最新在线 | 日本免费色网站 | 狠狠操影院| 久久婷婷一区二区三区 | 一二三区乱码一区二区三区码 | 日日干天天操 | 日本成人免费 | 黄色大片a级 | 亚洲成人在线电影 | 中文字幕亚洲一区 | 好男人午夜www视频在线观看 | 6080伦理久久精品亚洲 |

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品