最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

嵌入式開發(fā):在嵌入式應(yīng)用程序中混合C和C++

2023-02-23 17:31 作者:粵嵌科技  | 我要投稿

  許多嵌入式應(yīng)用程序仍使用c語言編寫,但越來越多的嵌入式開發(fā)人員現(xiàn)在使用C++語言編寫程序。某些應(yīng)用程序甚至共享這兩種語言。這有意義嗎?

  C是嵌入式應(yīng)用中最常用的編程語言。多年來,人們一直期待著向C++過渡,但過渡速度相當(dāng)緩慢。但是,許多開發(fā)人員正在考慮或計劃這樣做。C++實質(zhì)上是c的超集。因此,這兩種語言完全可以混合使用。

  雖然c和C++可以混合使用,但有三個問題:

  為什么要這么做?

  怎么做?

  有什么缺點或問題嗎?

  為什么在嵌入式應(yīng)用程序中混合使用C和C++代碼?

  簡單的答案是遺留代碼。一個新項目很少從頭開始。如果是這樣,嵌入式開發(fā)人員可以用C++編寫所有內(nèi)容。

  然而,更合理的出發(fā)點和更可能的是重用現(xiàn)有代碼,無論是從內(nèi)部還是外部源代碼。這段代碼是C。因此,要繼續(xù)使用C++,這兩種語言的混合幾乎是不可避免的。

  

  如何混合C和C++代碼?

  C和C++共存有兩種基本方式:

  方法A:混合代碼的明顯方法是嵌入式開發(fā)人員用自己的編譯器編譯每個模塊,然后將所有對象模塊連接在一起。然而,這會立即導(dǎo)致一個問題:報告鏈接錯誤。這是因為C++編譯器更改了函數(shù)的名稱,這被稱為“mangling”。

  這些更改生成由原始標(biāo)識符和函數(shù)參數(shù)的數(shù)量和類型的組合組成的唯一名稱。這有兩個原因:第一,當(dāng)函數(shù)聲明、定義和調(diào)用不匹配時,會發(fā)生鏈接錯誤。[這被稱為“類型安全鏈接”。]其次,它有助于重載函數(shù),其中兩個函數(shù)具有相同的名稱,但具有不同的參數(shù)組合;“mangling”使每個名稱都唯一。

  這個問題可以用外部C結(jié)構(gòu)來解決。使用此限定符聲明C++函數(shù)意味著其名稱不會更改。C函數(shù)的外部聲明應(yīng)用程序確保C++編譯器不會管理對該函數(shù)的調(diào)用。

  方法B:另一種方法是使用C++編譯器編譯C代碼,即將其視為C++代碼。如果C是C++的真正子集,這將無縫地工作。事實上,嵌入式開發(fā)人員需要非常小心地“清理”代碼并確保它真正兼容。

  混合C和C++代碼有什么缺點嗎?

  混合這兩種語言的缺點很少。在方法A中,存在類型安全鏈接丟失的問題。然而,這只適用于從C++調(diào)用的C函數(shù),反之亦然。其他C++函數(shù)不受影響。當(dāng)然,公共函數(shù)不能重載。

  從長遠來看,方法B的應(yīng)用更好,因為一旦清理干凈,代碼就可以被當(dāng)作C++處理,并且可以使用該語言的函數(shù)。

  如前所述,清潔過程并不簡單。因此,嵌入式開發(fā)人員必須權(quán)衡工作的成本效益比率和未來使用遺留代碼的可能性。


嵌入式開發(fā):在嵌入式應(yīng)用程序中混合C和C++的評論 (共 條)

分享到微博請遵守國家法律
定边县| 来凤县| 柞水县| 常德市| 和平县| 唐河县| 建始县| 镇雄县| 西充县| 公安县| 兰溪市| 盖州市| 定南县| 枣强县| 旬邑县| 丰顺县| 石城县| 文安县| 江油市| 寿宁县| 台南市| 冕宁县| 淄博市| 南涧| 千阳县| 舞钢市| 长子县| 独山县| 铜陵市| 略阳县| 石城县| 卫辉市| 潼关县| 青田县| 贡嘎县| 和林格尔县| 澄江县| 航空| 克东县| 博罗县| 水富县|