av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

C 開發(fā)人員應(yīng)遵循的三個顯式編程技巧

顯式編程技巧 #1 – 將 extern 與公共函數(shù)一起使用

我們都知道我們不應(yīng)該使用 extern,因為它會創(chuàng)建全局變量,進而可能導(dǎo)致各種問題。但是,實際使用 extern 的一個好地方是在創(chuàng)建公共函數(shù)時。

成都創(chuàng)新互聯(lián)電話聯(lián)系:18980820575,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),成都創(chuàng)新互聯(lián)網(wǎng)頁制作領(lǐng)域10年,包括成都人造霧等多個行業(yè)擁有多年的網(wǎng)站推廣經(jīng)驗,選擇成都創(chuàng)新互聯(lián),為網(wǎng)站錦上添花!

當(dāng)你定義一個公開的函數(shù)時,你可以使用以下命令在標(biāo)頭中創(chuàng)建聲明或原型:

void Foo(void);

它在標(biāo)題中,所以很明顯它是一個公共的外部函數(shù)。但是,我遇到過這樣的情況,你正在維護一個別人編寫的模塊,并且在像 Bar 這樣的函數(shù)的標(biāo)頭中沒有公共 API,但它的定義如下:

void Bar(void)

{



}

這個函數(shù)的目的是什么? 它應(yīng)該是私有的并且前面有一個靜電嗎?它應(yīng)該是公開的并在標(biāo)題中定義嗎?如果嵌入式開發(fā)人員將 Bar 定義為:

extern Bar(void)

{



}

我們會知道它是公開的并且在 API 中缺失,盡管有人調(diào)用它,鏈接器仍然能夠找到它。

顯式編程技巧 #2 – 將指針作為 const 傳遞給函數(shù),除非它們改變

指針是危險的,如果它們在執(zhí)行過程中意外地以某種意想不到的方式遞增、遞減或修改,它們很容易導(dǎo)致災(zāi)難。我經(jīng)常會遇到如下所示的函數(shù)聲明:

void Foo(uint32_t * Param1);

這個聲明是如此含蓄,我讀了這個聲明,其目的是將一個指針傳遞給一個 uint32_t,其中指針和指向的 uint32_t 內(nèi)存位置都允許更改!

這是嵌入式開發(fā)人員的本意嗎? 如果他們只是想傳遞一個指向變量的指針,以便它通過引用傳遞并且可以被函數(shù)修改怎么辦? 這個函數(shù)可以做到這一點,但他們也打開了修改指針的選項!

下面的陳述對我來說非常清楚,指針不會改變,指向的值可以改變:

void Foo(uint32_t * const Param1);

參數(shù)是指向 uint32_t 內(nèi)存位置的 const 指針。指針在函數(shù)中不能改變,但指向的東西可以。因此,如果有人在函數(shù)中執(zhí)行以下操作:

Param++;

編譯器會說“不! 錯誤!”,讓維護者明白他們不應(yīng)該這樣做。

顯式編程技巧 #3 – 將“no reference”變量作為 const 傳遞

現(xiàn)在,這通常會讓嵌入式開發(fā)人員興奮不已,而且不是很好。有人告訴我這是無稽之談,但同樣,它使包括新手在內(nèi)的任何開發(fā)人員都清楚代碼。

這里的想法是我可能有一個聲明如下的函數(shù):

void Foo(uint32_t Param1);

在這種情況下,我通過副本而不是引用傳遞參數(shù),以供函數(shù)使用。該函數(shù)理論上可以對本地副本執(zhí)行任何操作。但同樣,如果有人在維護這段代碼,他們是否知道我們想要接收參數(shù)并將其用作常量? 對我來說,除非聲明是這樣寫的,否則我不會有任何線索:

void Foo(const uint32_t Param1);

這告訴我,該參數(shù)預(yù)計不會在副本中更改或修改以供本地使用。

這些提示有助于使代碼更清晰,并有助于嵌入式開發(fā)人員理解代碼的真正意圖?,F(xiàn)在,這些可能不是導(dǎo)致所有這些損失的隱式代碼的最佳做法,但它們確實讓你認(rèn)為你應(yīng)該編寫盡可能清晰的軟件。


網(wǎng)站題目:C 開發(fā)人員應(yīng)遵循的三個顯式編程技巧
網(wǎng)站鏈接:http://uogjgqi.cn/article/cceedjh.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流