一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

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

主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?

淘晶馳串口屏 ? 2025-05-21 10:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單片機(jī)的地界兒里,C 語言穩(wěn)坐中軍帳,C++ 想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++ 那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。

先說內(nèi)存這道坎兒。您當(dāng) stm32f4 的 256k RAM、1M ROM 是標(biāo)配?多數(shù)時候咱打交道的,是 stm8 這種 8k RAM 的 “小矮個兒”,stm32f1 的 32k RAM 就算是 “小康家庭” 了。就這么丁點兒地方,C 語言打個轉(zhuǎn)都得縮手縮腳,C++ 帶著類、對象、虛函數(shù)殺進(jìn)來,光構(gòu)造析構(gòu)的開銷就能把 ROM 啃掉一大塊。您說上實時系統(tǒng)?C 語言寫代碼都得掰著字節(jié)算,C++ 的運行時環(huán)境?在這兒純屬 “奢侈品”,就像讓小毛驢拉火車頭,根本不配套。

再聊動態(tài)內(nèi)存這事兒。keil 里 stm32f1 的 malloc 默認(rèn)就 800 字節(jié),您想用 C++ 的動態(tài)內(nèi)存玩花樣?那些依賴動態(tài)內(nèi)存的類,分分鐘把棧撐爆。單片機(jī)開發(fā)講究的是 “把每滴血都榨干”—— 全局變量往 map 文件里一擺,編譯完內(nèi)存占用明明白白,出問題順著寄存器和棧區(qū)就能摸到根兒。C++ 的動態(tài)內(nèi)存監(jiān)控庫?得了吧,那庫自己先占一塊內(nèi)存,本來就緊張的 RAM 哪經(jīng)得起這么折騰?咱電子工程師沒那么多講究,估摸好內(nèi)存直接定全局變量,爆了內(nèi)存直接扒拉匯編找棧幀,比在 C++ 的內(nèi)存海里撈針痛快多了。

硬件驅(qū)動這塊兒,芯片廠壓根沒給 C++“開小灶”。就說 stm32 的 HAL 庫,用句柄模仿類函數(shù),可要是不用 cubemx 自己擼代碼,那層層嵌套的函數(shù)能把人繞暈,改個驅(qū)動能薅掉半頭頭發(fā)。反過來看 C 語言的標(biāo)準(zhǔn)庫,直接把寄存器封裝得明明白白,想改哪兒就改哪兒,對著芯片手冊就能硬剛寄存器位。要是發(fā)現(xiàn)廠商把寄存器位置改錯了,分分鐘就能揪出來。C++ 想玩硬件級操作?先穿過類封裝的 “迷宮” 再說,等摸到寄存器,C 語言寫的驅(qū)動早跑出老遠(yuǎn)了。

最后說說咱寫代碼的人。沒錯,咱在純軟大佬眼里就是 “菜”—— 四年大學(xué)就學(xué)了 C 語言和匯編,數(shù)據(jù)結(jié)構(gòu)、算法啥的都是野路子,git、stackoverflow 也不熟,寫的代碼沒少被罵 “屎山”。可您讓那些玩慣高級語言的來搞單片機(jī),分分鐘在內(nèi)存越界里打轉(zhuǎn)。咱靠的就是對硬件的死磕勁兒,知道每一行代碼在寄存器里怎么跳,C++ 的優(yōu)雅在這兒不如一句精準(zhǔn)的寄存器操作實在。您看市面上的 MCU 例程、廠商庫,有幾個不是 C 語言打底?生態(tài)在這兒擺著,咱犯不著為了好看去折騰那些不實用的語法糖。

在 MCU 開發(fā)這一畝三分地里,C 語言就像一把趁手的螺絲刀,簡單、直接、高效,每一行代碼都能釘在該釘?shù)牡胤剑籆++ 則像一把雕花匕首,好看是好看,可在這兒施展不開。咱追求的不是代碼多漂亮,而是讓那幾 k 的 RAM 和幾十 k 的 ROM 實實在在跑起來,不出錯、好調(diào)試、能落地 —— 就這點兒實在需求,C 語言足夠漂亮地把活兒干完,何必去夠那夠不著的月亮呢?

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

    關(guān)注

    146

    文章

    17915

    瀏覽量

    362567
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140965
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    是否應(yīng)該使用C++替代C語言進(jìn)行開發(fā)工作

    軟件是用C語言編寫的。然而,C++已經(jīng)逐漸普及,大約23%的新嵌入式軟件項目都是用C++編寫的。C語言
    發(fā)表于 11-05 09:00

    C語言C++運用

    識別等領(lǐng)域得到了進(jìn)一步的推動和發(fā)展。嵌入式開發(fā)為什么用C語言?我們都知道,嵌入式開發(fā)要用C語言。
    發(fā)表于 11-25 10:47

    是否應(yīng)該使用C++替代C語言進(jìn)行開發(fā)工作

    ,56%的嵌入式軟件是用C語言編寫的。然而,C++已經(jīng)逐漸普及,大約23%的新嵌入式軟件項目都是用C++編寫的。C
    發(fā)表于 12-15 07:31

    c++程序設(shè)計語言題解

    c++程序設(shè)計語言題解是與Bjarne Stroustrup的《C++程序設(shè)計語言》一書配套使用的習(xí)題解答,為從《C++程序設(shè)計
    發(fā)表于 09-05 16:00 ?121次下載
    <b class='flag-5'>c++</b>程序設(shè)計<b class='flag-5'>語言</b>題解

    CC++語言參考手冊

    CC++語言參考手冊
    發(fā)表于 06-19 11:12 ?23次下載

    c++c語言之間有什么區(qū)別

    C++是在C語言的基礎(chǔ)上發(fā)展來的,但是并不是C++C語言
    發(fā)表于 12-11 10:17 ?3.2w次閱讀

    C/C++編程語言學(xué)習(xí)難點及語言

    一般學(xué)C++前都要學(xué)C,所以通常叫它們C/C++。C/C++歷經(jīng)40余年,也是經(jīng)久不衰的號稱“永
    發(fā)表于 08-15 10:24 ?2407次閱讀

    C語言C++相互調(diào)用

    ? ? 1CC++相互調(diào)用 在一個嵌入式系統(tǒng)中大部分的底層和驅(qū)動層更多的是采用C語言來進(jìn)行開發(fā),
    的頭像 發(fā)表于 01-18 11:05 ?3594次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>與<b class='flag-5'>C++</b>相互調(diào)用

    嵌入式程序開發(fā),C語言C++究竟應(yīng)該用哪個?

    在嵌入式軟件程序開發(fā)中,C語言無疑是最常被使用的程序語言。不過應(yīng)該明白的是,有些嵌入式硬件同時提供C語言
    發(fā)表于 11-03 14:21 ?60次下載
    嵌入式程序<b class='flag-5'>開發(fā)</b>,<b class='flag-5'>C</b><b class='flag-5'>語言</b>和<b class='flag-5'>C++</b>究竟應(yīng)該用哪個?

    C++語言的發(fā)展

    今年的CPP North C++大會上,谷歌宣布了一門新的編程語言Carbon,并稱其將是“C++的繼任者”。
    發(fā)表于 08-15 14:22 ?763次閱讀

    C語言不是最好的,卻是我最愛的

    雖然 C 語言不是我所學(xué)的第一門語言,也不是我的最后一門語言,但是我仍然非常喜歡
    發(fā)表于 11-24 09:47 ?618次閱讀

    淺談C語言C++的前世今生

    C++開發(fā)人員將有這些問題歸咎于C,C開發(fā)人員則認(rèn)為C++
    發(fā)表于 05-26 09:27 ?658次閱讀
    淺談<b class='flag-5'>C</b><b class='flag-5'>語言</b>與<b class='flag-5'>C++</b>的前世今生

    C語言C++的區(qū)別看法

    編寫了自己的業(yè)務(wù)愛好項目。那么,為什么我沒有拋棄 C 選擇其他語言呢?我對于 C++的看法又是如何的呢? 1 為什么說C
    的頭像 發(fā)表于 07-06 14:29 ?1302次閱讀

    vb語言c++語言的區(qū)別

    Microsoft開發(fā)的一種面向?qū)ο蟮氖录?qū)動編程語言。它的設(shè)計目標(biāo)是簡化編程過程,讓初學(xué)者也能快速上手。與之相比,C++語言是一種通用的、面向?qū)ο蟮木幊?/div>
    的頭像 發(fā)表于 02-01 10:20 ?3243次閱讀

    c語言,c++,java,python區(qū)別

    C語言、C++、Java和Python是四種常見的編程語言,各有優(yōu)點和特點。 C語言
    的頭像 發(fā)表于 02-05 14:11 ?3154次閱讀