www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 智能硬件 > 智能硬件
[導(dǎo)讀]引 言 我們?cè)诰帉?xiě)軟件時(shí)不但要追求代碼的正確性,更要關(guān)注程序的容錯(cuò)能力,在環(huán)境不正確或操作不當(dāng)時(shí)不能死機(jī),更不能造成災(zāi)難性后果。程序運(yùn)行時(shí)有些錯(cuò)誤是不可避免的,如內(nèi)存不足、文件打開(kāi)失敗、數(shù)組下標(biāo)溢


引 言
    我們?cè)诰帉?xiě)軟件時(shí)不但要追求代碼的正確性,更要關(guān)注程序的容錯(cuò)能力,在環(huán)境不正確或操作不當(dāng)時(shí)不能死機(jī),更不能造成災(zāi)難性后果。程序運(yùn)行時(shí)有些錯(cuò)誤是不可避免的,如內(nèi)存不足、文件打開(kāi)失敗、數(shù)組下標(biāo)溢出等,這時(shí)要力爭(zhēng)做到排除錯(cuò)誤,繼續(xù)運(yùn)行。
    傳統(tǒng)做法是返回一個(gè)錯(cuò)誤代碼,調(diào)用者通過(guò)if等語(yǔ)句測(cè)試返回值來(lái)判斷是否成功。這樣做有幾個(gè)缺點(diǎn):首先,增加的條件語(yǔ)句可能會(huì)帶來(lái)更多的錯(cuò)誤;其次,條件語(yǔ)句是分支點(diǎn),會(huì)增加測(cè)試難度;另外,構(gòu)造函數(shù)沒(méi)有返回值,返回錯(cuò)誤代碼是不可能的。
    C++的異常機(jī)制為我們提供了更好的解決方法。異常處理的基本思想是:當(dāng)出現(xiàn)錯(cuò)誤時(shí)拋出一個(gè)異常,希望它的調(diào)用者能捕獲并處理這個(gè)異常。如果調(diào)用者也不能處理這個(gè)異常,那么異常會(huì)傳遞給上級(jí)調(diào)用,直到被捕獲處理為止。如果程序始終沒(méi)有處理這個(gè)異常,最終它會(huì)被傳到C++運(yùn)行環(huán)境,運(yùn)行環(huán)境捕獲后通常只是簡(jiǎn)單地終止這個(gè)程序。異常機(jī)制使得正常代碼和錯(cuò)誤處理代碼清晰地劃分開(kāi)來(lái),程序變得非常干凈并且容易維護(hù)。
    但是如何合理地使用異常機(jī)制來(lái)達(dá)到預(yù)期的效果呢?MISRA C++給出了一些推薦的規(guī)則,幫助程序員更加合理、可靠地實(shí)現(xiàn)異常機(jī)制。下面將結(jié)合這些規(guī)則對(duì)異常機(jī)制進(jìn)行簡(jiǎn)單的探討。

1 在恰當(dāng)?shù)膱?chǎng)合使用恰當(dāng)?shù)奶匦?/b>
    MISRA C++對(duì)異常的第1條規(guī)則就是:
    規(guī)則15-0-1(不容討論):異常機(jī)制只能用來(lái)處理錯(cuò)誤。
    異常處理的本質(zhì)是控制流程的轉(zhuǎn)移,但異常機(jī)制是針對(duì)錯(cuò)誤處理的,僅在代碼可能出現(xiàn)異常的情況下使用,不能用來(lái)實(shí)現(xiàn)普通的流程轉(zhuǎn)移。
    例如:

    
    語(yǔ)法不會(huì)阻止你這樣做,但殺雞焉用牛刀。這樣不但會(huì)降低程序的可讀性,也會(huì)帶來(lái)更大的開(kāi)銷(xiāo)。實(shí)際上,用一個(gè)簡(jiǎn)單的if語(yǔ)句就可以實(shí)現(xiàn)上述邏輯。同樣,出于程序流程的清晰性考慮的還有:
    規(guī)則15-0-3(強(qiáng)制):不允許通過(guò)goto或者switch語(yǔ)句跳轉(zhuǎn)到try或catch語(yǔ)句塊內(nèi)。

2 正確地拋出異常
   
什么時(shí)候,什么地方,拋出什么樣的異常,都是需要仔細(xì)考慮的。MISRA C++對(duì)此也作了相關(guān)規(guī)定。首先,來(lái)看一下拋出異常對(duì)象的類(lèi)型中有哪些需要注意的地方。規(guī)則15-0-2(推薦):拋出的異常對(duì)象不應(yīng)該是指針類(lèi)型。
    如果拋出的異常對(duì)象是個(gè)指針類(lèi)型,指向的是動(dòng)態(tài)創(chuàng)建的對(duì)象,那么這個(gè)對(duì)象應(yīng)該由哪個(gè)函數(shù)來(lái)負(fù)責(zé)銷(xiāo)毀,什么時(shí)候銷(xiāo)毀,都很不清楚。比如說(shuō),如果是在堆中建立的對(duì)象,那通常必須刪除,否則會(huì)造成資源泄漏;如果不是在堆中建立的對(duì)象,通常不能刪除,否則程序的行為將不可預(yù)測(cè)。
    規(guī)則15-1-2(強(qiáng)制):不能顯式地把NULL作為異常對(duì)象拋出。
    因?yàn)閠hrow(NULL)=tbrow(0),因此NULL會(huì)被當(dāng)作整型捕獲,而不是空指針常量,這可能與程序員的預(yù)期不一致。
    通常,很多函數(shù)都是基于function-try-block結(jié)構(gòu)的,即函數(shù)體整個(gè)包含在一個(gè)函數(shù)try塊中。而函數(shù)能拋出什么類(lèi)型的異常對(duì)象,有以下規(guī)定:
    規(guī)則15-5-2(強(qiáng)制):如果一個(gè)函數(shù)聲明時(shí)指定了具體的異常類(lèi)型,那么它只能拋出指定類(lèi)型的異常。
    規(guī)則15-4-1(強(qiáng)制):如果一個(gè)函數(shù)聲明時(shí)指定了異常的類(lèi)型,那么在其他編譯單元里該函數(shù)的聲明必須有同樣的指定。
    函數(shù)的代碼結(jié)構(gòu)如下:返回值類(lèi)型函數(shù)名(形參表)throw(類(lèi)型名表){函數(shù)體}
    如果函數(shù)在聲明時(shí)沒(méi)有異常規(guī)范,那么它可以?huà)伋鋈我忸?lèi)型的異常對(duì)象;如果異常類(lèi)型為空,則表示不拋出任何類(lèi)型異常。注意這兩者之間的區(qū)別,前者指沒(méi)有throw(類(lèi)型名表)語(yǔ)句,而后者有throw(類(lèi)型名表),只是類(lèi)型名表為空。但如果聲明時(shí)指定了異常的類(lèi)型,那么它只能拋出指定類(lèi)型的異常。
    另外,函數(shù)原型中的異常聲明要與實(shí)現(xiàn)中的異常聲明一致,否則會(huì)引起異常沖突。由于異常機(jī)制是在運(yùn)行出現(xiàn)異常時(shí)才發(fā)揮作用的,因此如果函數(shù)的實(shí)現(xiàn)中拋出了沒(méi)有在其異常聲明列表中列出的異常,編譯器也許不能檢查出來(lái)。當(dāng)拋出一個(gè)未在其異常聲明列表里的異常類(lèi)型時(shí),unexpected()函數(shù)會(huì)被調(diào)用,默認(rèn)會(huì)導(dǎo)致std::bad_exception類(lèi)型的異常被拋出。如果std::bad_exception不在異常聲明列表里,又會(huì)導(dǎo)致terminate()被調(diào)用,從而導(dǎo)致程序結(jié)束。
    對(duì)于什么時(shí)候能拋出異常,則有以下規(guī)定:
    規(guī)則15-3-1(強(qiáng)制):異常只能在初始化之后而且程序結(jié)束之前拋出。
    在執(zhí)行main函數(shù)體之前,是初始化階段,構(gòu)造和初始化靜態(tài)對(duì)象;在main函數(shù)返回后,是終止階段,靜態(tài)對(duì)象被銷(xiāo)毀。在這兩個(gè)階段中如果拋出異常,會(huì)導(dǎo)致程序以不定的方式終止(這依賴(lài)于具體的編譯器)。例如:
   

    在這個(gè)例子中,catch塊只能捕獲上面try塊中的異常。如果在對(duì)象c的構(gòu)造函數(shù)或析構(gòu)函數(shù)中拋出異常,并不能被main里的catch塊捕獲,而且會(huì)導(dǎo)致程序終止。
    除了上述規(guī)則,還有以下兩個(gè)規(guī)則需要注意:
    規(guī)則15-1-1(強(qiáng)制):throw語(yǔ)句中的表達(dá)式本身不能引發(fā)新的異常。
    如果在構(gòu)造異常對(duì)象,或者計(jì)算賦值表達(dá)式時(shí)引發(fā)新的異常,那么新的異常會(huì)在本來(lái)要拋出的異常之前被拋出,這與程序員的預(yù)期不一致。
    規(guī)則15-1-3(強(qiáng)制):空的throw語(yǔ)句只能出現(xiàn)在catch語(yǔ)句塊中。
    空的throw用來(lái)將捕獲的異常再拋出,可以實(shí)現(xiàn)多個(gè)處理程序問(wèn)異常的傳遞。然而,如果在catch語(yǔ)句外用,由于沒(méi)有捕獲到異常,也就沒(méi)有東西可以再拋出,這樣會(huì)導(dǎo)致程序以不定的方式終止(這依賴(lài)具體的編譯器)。

3 合理地處理異常
   
由于后面的討論多處涉及到“棧展開(kāi)”這個(gè)概念,這里先解釋一下?!皸U归_(kāi)”是異常機(jī)制中一個(gè)重要的過(guò)程:在逐層查找用來(lái)處理異常的catch子句時(shí),因?yàn)楫惓6顺鰪?fù)合語(yǔ)句和函數(shù)定義,這個(gè)過(guò)程被稱(chēng)作“棧展開(kāi)”。隨著棧的展開(kāi),在退出的復(fù)合語(yǔ)句和函數(shù)定義中聲明的局部變量的生命期也結(jié)束,而且這些局部類(lèi)對(duì)象的析構(gòu)函數(shù)也會(huì)被調(diào)用,這樣能保證內(nèi)存空間得到合理回收。棧展開(kāi)的概念對(duì)于理解后面的內(nèi)容很重要,我們通過(guò)一個(gè)具體例子進(jìn)一步闡述。

    
    當(dāng)異常發(fā)生時(shí),在函數(shù)調(diào)用鏈中逐層查找該異常的catch子句。在棧展開(kāi)過(guò)程中函數(shù)foo()首先被檢查到,因?yàn)楫a(chǎn)生異常的語(yǔ)句沒(méi)有被放在try塊中,所以不會(huì)在:foo()中查找針對(duì)該異常的catch子句。棧展開(kāi)過(guò)程繼續(xù)向上遍歷函數(shù)調(diào)用鏈到達(dá)調(diào)用foo()的函數(shù)。然而在foo()帶著這個(gè)未處理的異常退出之前,棧展開(kāi)過(guò)程會(huì)銷(xiāo)毀foo()中所有在異常產(chǎn)生之前被創(chuàng)建的局部類(lèi)對(duì)象。結(jié)果就是:o1、o2的析構(gòu)函數(shù)被調(diào)用,o3已經(jīng)“死亡”,而o4還沒(méi)“出生”。
    顧名思義,“異?!本褪浅绦蜻\(yùn)行出現(xiàn)了非預(yù)期的情況,或者說(shuō)錯(cuò)誤。因此,出現(xiàn)異常必須有針對(duì)地處理。對(duì)此,MISRA C++首先有如下規(guī)定:
    規(guī)則15-3-4(強(qiáng)制):所有可能的流程中顯式拋出來(lái)的異常都應(yīng)該有一個(gè)類(lèi)型兼容的處理程序。
    規(guī)則15-3-2(推薦):至少要有一個(gè)處理程序來(lái)處理所有其他未針對(duì)處理的異常。
    如果程序拋出一個(gè)沒(méi)有被處理的異常,程序會(huì)終止,而終止前調(diào)用棧有沒(méi)有被“展開(kāi)”,動(dòng)態(tài)對(duì)象能不能被析構(gòu),這些都依賴(lài)于編譯器。上面兩條規(guī)則規(guī)定了:不但預(yù)期拋出的異常要進(jìn)行處理,其他可能被拋出的異常也要有相應(yīng)的處理措施。請(qǐng)注意規(guī)則15-3-4中“類(lèi)型兼容”的字眼,C++有非常靈活的類(lèi)型兼容規(guī)則,尤其對(duì)于類(lèi)。例如當(dāng)異常對(duì)象是派生類(lèi)時(shí),“兼容類(lèi)型”可以是派生類(lèi),也可以是基類(lèi)。后面我們還會(huì)具體討論這個(gè)問(wèn)題。
    一個(gè)try塊后可以有多個(gè)catch塊來(lái)捕獲不同的異常。當(dāng)出現(xiàn)異常時(shí),catch處理程序按照其在try塊后出現(xiàn)的順序被逐個(gè)檢查,只要找到一個(gè)匹配的異常類(lèi)型,后面的異常處理都被忽略。因此,catch處理程序出現(xiàn)的順序很重要。
    規(guī)則15-3-6(強(qiáng)制):若一個(gè)try-catch語(yǔ)句塊有多個(gè)處理程序,或者一個(gè)派生類(lèi)和其部分或全部基類(lèi)的function-try-block塊有多個(gè)處理程序,處理程序的順序應(yīng)該是先派生類(lèi)后基類(lèi)。
    規(guī)則15-3-7(強(qiáng)制):若一個(gè)try-catch語(yǔ)句塊或者function-try-block塊有多個(gè)處理程序時(shí),catch(…)處理程序(捕獲所有異常)應(yīng)該放在最后。
    這是因?yàn)楦鶕?jù)類(lèi)型兼容規(guī)則,異常對(duì)象為派生類(lèi)時(shí)可以被針對(duì)基類(lèi)的處理程序所捕獲。如果針對(duì)基類(lèi)的處理程序放在前面,后面針對(duì)派生類(lèi)的處理程序就不會(huì)被執(zhí)行到。同理,catch(…)處理程序能捕獲所有類(lèi)型的異常,在其后面所有的異常處理程序都不會(huì)被執(zhí)行到。
    根據(jù)上述規(guī)則,典型的try-catch的結(jié)構(gòu)示例如下:

    

    細(xì)心的讀者也許會(huì)發(fā)現(xiàn),上面例子中是通過(guò)引用來(lái)捕獲類(lèi)的對(duì)象。當(dāng)異常對(duì)象類(lèi)型為某個(gè)類(lèi)時(shí),有3種方式傳遞到catch子句里:指針、傳值和引用。也許大家首先想到的是指針,指針的確是效率很高的工具,而且不涉及到對(duì)象拷貝。但不要忘了,前面的規(guī)則15-0-2中明確指出,拋出的異常對(duì)象不應(yīng)該是指針類(lèi)型。而對(duì)于傳值和引用,在MISRA C++中給出的規(guī)定是:通過(guò)引用捕獲異常。
    規(guī)則15-3-5(強(qiáng)制):若異常對(duì)象為類(lèi)的對(duì)象時(shí),應(yīng)該通過(guò)引用來(lái)捕獲。
    通過(guò)值傳遞,不但會(huì)增加拷貝對(duì)象的開(kāi)銷(xiāo),而且還會(huì)出現(xiàn)“退化”問(wèn)題。所謂“退化”是指:如果異常對(duì)象是一個(gè)派生類(lèi)對(duì)象,但被作為基類(lèi)捕獲,那么只有基類(lèi)的函數(shù)(包括虛函數(shù))能被調(diào)用,派生類(lèi)中增加的數(shù)據(jù)成員都不能被訪問(wèn)。通過(guò)引用捕獲則沒(méi)有這個(gè)問(wèn)題。下面的例子具體地說(shuō)明了“退化”問(wèn)題:

    
    鑒于類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)的特殊性,還有兩點(diǎn)需要注意。
    規(guī)則15-3-3(強(qiáng)制):如果類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)是function-try-block結(jié)構(gòu)的,在catch處理程序中不能引用該類(lèi)或其基類(lèi)的非靜態(tài)成員。
    這種行為的后果是不定的。比如說(shuō),當(dāng)構(gòu)造對(duì)象分配內(nèi)存時(shí)拋出了異常,這時(shí)該對(duì)象本身還不存在,訪問(wèn)其成員也就出錯(cuò)。相反,在析構(gòu)函數(shù)里,可能在異常處理程序執(zhí)行前該對(duì)象已被成功銷(xiāo)毀了,也就無(wú)從訪問(wèn)其成員了。而類(lèi)的靜態(tài)成員則沒(méi)有上述問(wèn)題。
    規(guī)則15-5-1(強(qiáng)制)。類(lèi)的析構(gòu)函數(shù)退出后不能還有未處理的異常。
    當(dāng)異常拋出時(shí),會(huì)進(jìn)行棧展開(kāi)。如果在某個(gè)析構(gòu)過(guò)程中引發(fā)沒(méi)有被處理的異常,程序?qū)?huì)以不定的方式終止。析構(gòu)函數(shù)拋出異常的問(wèn)題在很多C++的書(shū)中都有討論,概括來(lái)說(shuō):析構(gòu)函數(shù)應(yīng)盡可能地避免拋出異常,如果的確無(wú)法避免,則析構(gòu)函數(shù)自己應(yīng)該包含處理所有可能拋出的異常的代碼。

4 小 結(jié)
    異常機(jī)制是C++嶄新而高級(jí)的特性之一。與其他C++特性一樣,C++標(biāo)準(zhǔn)并沒(méi)有規(guī)定應(yīng)該如何來(lái)實(shí)現(xiàn)異常機(jī)制,這依賴(lài)于具體的編譯器。異常機(jī)制是有代價(jià)的,它會(huì)增加代碼大小和運(yùn)行開(kāi)銷(xiāo)。以VC++為例,異常處理是通過(guò)在函數(shù)調(diào)用棧里增加許多相關(guān)的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,感興趣的讀者可以查看相關(guān)資料,這里不再進(jìn)一步討論;而且異常處理是在操作系統(tǒng)的協(xié)助下,由C++編譯器和運(yùn)行時(shí)異常處理庫(kù)共同完成的。如何合理地使用異常機(jī)制來(lái)提高程序的健壯性,MISRA C++給出了一些規(guī)范,但具體還需要程序員反復(fù)斟酌,甚至需要多次實(shí)驗(yàn)。至此,關(guān)于MISRA-C++:2008的學(xué)習(xí)暫告一段落。
    在這4期的講座中,我們主要討論了C++對(duì)于C新增的特性,列舉和解釋了其中有代表性的規(guī)則,且盡量使每篇文章都能涵蓋C++的一個(gè)重要特性。有些例子是在我們理解的基礎(chǔ)上加的,可能存在著錯(cuò)誤或偏差,歡迎大家和我們共同討論。通過(guò)這4期介紹,希望大家能夠意識(shí)到:C++對(duì)于C并不是簡(jiǎn)單的語(yǔ)言的改進(jìn),C++面向?qū)ο蟮乃枷霃母旧嫌绊懥塑浖募軜?gòu)。
    可以預(yù)見(jiàn),隨著嵌入式產(chǎn)業(yè)的飛速發(fā)展,在嵌入式領(lǐng)域C++將會(huì)有輝煌的前景。對(duì)C++進(jìn)行改造,使其適用于嵌入式環(huán)境,提高其可靠性,對(duì)于推動(dòng)C++在嵌入式領(lǐng)域的應(yīng)用是很重要的。MISRA-C已經(jīng)在嵌入式C語(yǔ)言上取得了很大的成功,成為行業(yè)普遍認(rèn)同和遵循的規(guī)范。我們希望MISRA-C++也能和MISRA-C一樣,推動(dòng)C++在嵌入式領(lǐng)域的規(guī)范化。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

美國(guó)紐約州阿蒙克2022年10月20日 /美通社/ -- IBM(NYSE: IBM)發(fā)布 2022 年第三季度業(yè)績(jī)報(bào)告。 IBM 董事長(zhǎng)兼首席執(zhí)行官 Arvind Kri...

關(guān)鍵字: IBM 軟件 BSP 云平臺(tái)

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開(kāi)發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動(dòng)商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專(zhuān)屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動(dòng)的最基本功能。而對(duì)于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對(duì)于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績(jī)預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營(yíng)業(yè)收入7.54億元至8.33億元,同比增長(zhǎng)60.24%至77.03%;歸母凈利潤(rùn)預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級(jí)企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠(chéng)健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷(xiāo)售額同比增長(zhǎng)59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國(guó))在華深耕經(jīng)營(yíng)12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對(duì)在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國(guó)進(jìn)出口商品交易會(huì)("廣交會(huì)")于"云端"開(kāi)幕。本屆廣交會(huì)上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過(guò)140,...

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

實(shí)際上函數(shù)指針本質(zhì)也是一個(gè)指針,只不過(guò)這個(gè)指針指向的不是內(nèi)存中的一段數(shù)據(jù)而是內(nèi)存中的一段代碼

關(guān)鍵字: 指針 數(shù)據(jù) 代碼

智能硬件

22003 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉