成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C 開發人員應遵循的三個顯式編程技巧

開發 前端
嵌入式系統開發人員應盡可能明確,以避免 ASSUME 綜合癥并在其系統中產生意外行為。在今天的文章中,讓我們來看看嵌入式開發人員可以通過更明確的方式清理代碼的幾個領域。

嵌入式系統開發人員應盡可能明確,以避免 ASSUME 綜合癥并在其系統中產生意外行為。在今天的文章中,讓我們來看看嵌入式開發人員可以通過更明確的方式清理代碼的幾個領域。

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

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

當你定義一個公開的函數時,你可以使用以下命令在標頭中創建聲明或原型:

void Foo(void);

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

void Bar(void)

{



}

這個函數的目的是什么? 它應該是私有的并且前面有一個靜電嗎?它應該是公開的并在標題中定義嗎?如果嵌入式開發人員將 Bar 定義為:

extern Bar(void)

{



}

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

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

指針是危險的,如果它們在執行過程中意外地以某種意想不到的方式遞增、遞減或修改,它們很容易導致災難。我經常會遇到如下所示的函數聲明:

void Foo(uint32_t * Param1);

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

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

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

void Foo(uint32_t * const Param1);

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

Param++;

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

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

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

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

void Foo(uint32_t Param1);

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

void Foo(const uint32_t Param1);

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

這些提示有助于使代碼更清晰,并有助于嵌入式開發人員理解代碼的真正意圖現在,這些可能不是導致所有這些損失的隱式代碼的最佳做法,但它們確實讓認為應該編寫盡可能清晰的軟件

責任編輯:華軒 來源: 今日頭條
相關推薦

2022-02-28 16:05:53

開發RTOS數據

2023-03-07 17:56:09

Docker容器開源

2020-06-11 15:53:30

人工智能AI開發人員

2021-05-05 09:57:50

編程軟件開發開發

2021-12-10 13:06:37

低代碼無代碼開發人員

2023-02-08 08:32:58

2022-07-04 08:00:00

Web開發人員編程習慣程序員

2023-10-13 18:10:14

編程語言Rust

2023-06-12 10:51:43

開發工作效率技巧

2009-12-07 16:07:19

WCF編程

2017-10-24 11:59:41

JavaScript

2015-06-23 09:24:13

編程社區開發人員

2021-11-06 23:07:47

開發網站編程

2021-11-02 08:54:10

開發編程測試

2020-11-10 11:00:43

web

2017-01-12 19:47:59

Android秘訣技巧和資源

2023-02-21 14:51:58

JavaScrip技巧開發

2020-06-09 07:57:47

前端開發代碼

2011-07-10 15:18:11

開發

2023-02-06 18:27:00

開發人員語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产综合在线视频 | 精品亚洲一区二区三区 | 久久国产视频网 | 久久精品国产久精国产 | 成人免费一区二区三区牛牛 | 蜜臀av日日欢夜夜爽一区 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 中文字幕av中文字幕 | 久久亚洲春色中文字幕久久久 | 最新国产视频 | 欧美日韩在线不卡 | 免费视频一区二区 | 97视频在线观看免费 | 久久久婷婷 | 免费一级片 | 国产午夜精品一区二区三区四区 | 国产欧美精品一区二区三区 | 欧美亚洲免费 | 久久亚洲二区 | 色综合天天天天做夜夜夜夜做 | 亚洲国产一区二区三区 | 久久久国产精品一区 | 免费在线观看一区二区 | 一区二区免费视频 | 亚洲精品在线视频 | 伦理一区二区 | 超碰97免费在线 | 99久久精品免费看国产免费软件 | 美女三区 | 奇米影视在线 | 成年人网站国产 | 美女毛片 | 亚洲一区二区在线视频 | 一区二区三区国产好的精 | 国产日韩欧美另类 | 日韩视频成人 | 国产精品精品视频一区二区三区 | 黄色一级大片视频 | 国产乱一区二区三区视频 | 欧美精品一区在线发布 | 精品久久精品 |