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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

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

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

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

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

答案是:在各個平臺之間,基于大部分需求抽象出一個中間層。在中間層中,中間層用了屏蔽底層細節,在我們程序員看來C言語庫就是這樣一個中間層的作用。在各個平臺下,我們默認C標準庫中的函數都是一樣的,這樣基本可以實現可移植。但是對于C庫本身而言,在各種操作系統平臺下其內部實現是完全不同的,也就是說C庫封裝了操作系統API在其內部的實現細節。

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

當然,大家都可以看出上面的可移植是有條件的,C語言本身不能實現完全的可移植,為什么呢?因為,在我們程序中,我們經常會調用系統API,由于這些API在C語言中沒有對其封裝,所以我們只能用使用其原始的API,對于原始的API在各個操作系統中他們命名不同,就不能跨平臺移植。所以,我們要寫出完完全全的跨平臺的程序,還是需要其他的一些手段。例如在我們的代碼中下功夫。以下代碼可以幫助我們實現各平臺之間的可移植:

#ifdef _WINDOWS_

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

#else

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

#endif

對于頭文件,也使用同樣的預編譯宏來實現。如:

#ifndef _WINDOWS_

#include

#else

#include

#endif

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

綜上所述,我們都是將C,C++等各種語言當作中間層,以實現其一定程度上的可移植。如今,語言的跨平臺的程序都是以這樣的方式實現的。但是在不同的平臺下,仍需要重新編譯。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137714
  • 可移植性
    +關注

    關注

    0

    文章

    5

    瀏覽量

    7639

原文標題:什么是C語言的可移植?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    移植密碼登錄系統

    密碼登錄系統,labview,移植
    發表于 08-18 17:41

    移植密碼登錄系統,

    移植密碼登錄系統,
    發表于 08-18 17:55

    什么是C語言移植?

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

    如何使用抽象層設計移植代碼?

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

    如何實現Ozone項目移植

    找到源文件。本文將解析如何實現Ozone項目(.jdebug)移植。1、解決方式在Ozone中,使用項目向導新建項目時(Ozone調試器使用攻略),如果導入的elf文件和對應的源文件位于同一文件夾中
    發表于 01-05 13:56

    μC/OSII在Microchip MCU上的移植

    μC/OSⅡ是一個完整的,移植、固化、裁減的搶占式實時多任務內核。本文著重介紹了μC/OSⅡ嵌入式操作系統內核在Microchip PIC18F452 單片機上的
    發表于 07-30 14:16 ?55次下載

    移植µC/OS-Ⅱ教程

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

    嵌入式系統C語言位操作的移植與優化

    嵌入式系統C語言位操作的移植與優化   單片機的應用越來越廣泛,種類也越來越多。由于嵌入式C語言可讀性強、
    發表于 03-29 15:15 ?1111次閱讀

    SimpleLink SDK的移植示例

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

    STM32實用的按鍵處理程序移植的函數免費下載

    本文檔的主要內容詳細介紹的是STM32實用的按鍵處理程序移植的函數免費下載
    發表于 04-28 08:00 ?2次下載
    STM32實用的按鍵處理程序<b class='flag-5'>可</b><b class='flag-5'>移植</b>的函數免費下載

    PETSc科學計算移植擴展工具包的用戶手冊免費下載

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

    采用什么方法減少設計移植軟件的成本

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

    STM32移植使用mbedtls-2.24.0

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

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

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

    請問如何將C語言算法移植到FPGA上?

    確定算法:首先,你需要確保要移植C語言算法是合適的。FPGA適合并行計算和高度定制的應用。因此,你需要選擇一個適合FPGA實現的算法。
    發表于 09-12 17:20 ?2106次閱讀
    主站蜘蛛池模板: 国产亚洲精品久久久久久牛牛 | 性欧美video视频另类 | 在线看视频你懂的 | 日本a级精品一区二区三区 日本a级特黄三级三级三级 | 97人摸人人澡人人人超一碰 | 国产资源在线视频 | 老外一级黄色片 | 男啪女r18肉车文 | 性无码专区无码 | 你懂的在线免费观看 | 亚洲图色视频 | 国产美女视频黄a视频免费全过程 | 精品综合久久88色鬼首页 | 国产精品久久久久久久成人午夜 | 国产一区二区三区毛片 | 亚洲一级视频在线观看 | 欧美18xxoovideos | 日本大片免费观看视频 | www.4hu影院| 亚洲一区二区精品推荐 | 丁香五月欧美成人 | 香蕉视频黄色片 | 国内精品手机在线观看视频 | 亚洲成人高清在线 | 在线观看免费视频资源 | 人与牲动交xxxxbbb | 欧美二级黄色片 | 久久久久国产一级毛片高清板 | 中文字幕精品一区影音先锋 | 亚洲精品蜜桃久久久久久 | 黄色伊人网 | 午夜国产精品免费观看 | 日本三级成人午夜视频网 | 国产伦精品一区二区三区免费 | 国产色在线 | 亚洲 国产色综合天天综合网 | 久久天天躁综合夜夜黑人鲁色 | 曰本黄色一级 | 四虎国产精品永久在线看 | www.四虎影院在线观看 | 国产农村妇女毛片精品久久久 | 亚洲一区二区三区四区五区六区 |