1. gzyueqian
      13352868059

      嵌入式開發:硬件工程師的9個C語言技巧

      更新時間: 2022-10-10 09:47:56來源: 粵嵌教育瀏覽量:8378

        對于硬件設計人員來說,編寫代碼來測試硬件是否正常工作或者在資源受限的情況下開發硬件和嵌入式軟件通常是有意義的或者是必要的。嵌入式開發人員選擇的語言仍然是C,盡管工具和結構化編程取得了進步,但還是會一次又一次地出現基本錯誤。為了避免這些C語言編程的陷阱,這里有9個給硬件工程師的C語言技巧。

        提示1——不要使用“goto”語句

        大約二十年前,當計算機編程還處于初級階段時,程序流是由“goto”語句控制的。這些語句允許程序員中斷當前代碼行,直接進入不同的代碼段。

        編程語言最終開始結合函數的思想,這允許程序中斷到一段代碼,但不需要另一個goto語句,當完成時,函數返回到函數調用后的下一條指令。

        提示 #2 – 使用 for(;;) 或 while(1)

        如果 goto 不可用,一些硬件工程師可能想知道如何為程序創建無限循環。畢竟,這可能是通過創建返回到 main 頂部的 goto 語句來完成的。答案是利用 C 語言中已經內置的循環語句; for和while。

        技巧3——對工作使用適當的條件語句

        除了代碼的可讀性之外,程序執行時間在很大程度上取決于為做出決策而選擇的條件結構的類型。許多嵌入式開發工程師熟悉簡單if語句的用法;然而,有時工程師沒有意識到,如果第一個條件不正確,可以使用else或else if語句。這可以節省處理器的時間,因為不必計算另一個條件語句。

        if/else if/else語句可能并不總是合適的。如果有許多可能的條件需要檢查,則使用switch語句可能更合適。這允許處理器評估語句,然后從一系列答案中選擇下一步應該做什么,而不是不斷評估一堆條件。

        

        技巧4——避免使用匯編語言

        微處理器的自然語言是匯編語言指令。用低級機器語言編寫程序可以為處理器產生更有效的代碼;然而,經驗表明,編寫匯編語言會導致誤解。誤解會導致不適當的維護或者更糟,結果是系統被錯誤覆蓋。因此,一般的建議是避免使用匯編語言。事實的真相是,現在大多數編譯器每天都在編譯非常高效的代碼。用像C/C++這樣的高級語言開發會產生更有組織的結構,更容易理解和維護,其結果是總體上更好的代碼。

        也就是說,仍然有適合使用匯編語言的時候,但是這種時候很少。第一個推薦時間可能是在開發引導加載程序時。在這種情況下,嵌入式開發人員在啟動過程中,可能需要優化決定啟動應用程序或啟動加載程序的速度。在這種情況下,分支決策的匯編代碼可能是有意義的。另一個是在開發對DSP有嚴格時序要求的控制環路時。為了使器件的每個時鐘周期有序,用匯編語言編寫控制循環可能是有意義的。如果手頭的任務適合使用匯編,確保它被很好地文檔化,以便將來的開發者(或者你自己的將來版本)可以理解代碼在做什么。

        技巧5——利用模塊化

        當作者接手一個由硬件工程師開始的新項目時,最常見的經歷之一就是糟糕的代碼組織。在這些應用中,一切都是全局的,函數是稀疏的,goto語句支配著代碼的組織。15年前,這是一種規范,但現在不是了!用C/編程使工程師們能夠把他們的代碼分解成獨立的功能模塊。這簡化了代碼的導航,但也開始允許工程師使用面向對象的技術,如封裝。在有意義的地方,將代碼組織成邏輯模塊。這將需要更多的時間(幾分鐘!),但從長遠來看,這將節省許多漫長的夜晚和調試的痛苦!

        技巧6——使用描述性的變量名

        編寫易于理解和維護的優秀軟件的障礙之一是變量的命名慣例。為了保持變量名的簡潔性,嵌入式開發人員通常會創造出只有他們才能理解的簡短、晦澀的助記符。現代語言允許在變量名中包含100個字符。為了把事情說清楚,就像俗話說的“直言不諱”而不是別的什么。這將使變量名不僅對開發人員顯而易見,對未來的維護團隊也是如此。

        

        技巧7——少用#pragma語句

        在C語言中,有一種特殊類型的語句叫做#pragma。這些語句通常處理非標準的語法和功能。應該盡可能避免使用它們,因為它們是非標準的,不能從一個處理器移植到下一個處理器。一些編譯器可能需要它們來完成一些任務,比如定義一個中斷服務例程。在這些情況下,可能沒有辦法使用#pragma。如果可能的話,將#pragma語句放在一個或幾個模塊中。這將有助于確保在移植代碼時,只有幾個地方可以更新代碼,而不是分散在整個代碼庫中。這將有助于防止第一次編譯移植代碼時出現噩夢。

        技巧8——錯誤并不總是像它們看起來的那樣

        調試C程序時要注意的一個問題是編譯器錯誤。根據編譯器的復雜程度,當檢測到一個錯誤時,這個錯誤經常出現在程序中編譯器沒有指出的地方。其原因與編譯器生成程序的步驟有關。錯誤的類型通常是相當一致的,所以工程師可以尋找幾個錯誤,十有八九是錯誤。

        注意丟失的#include文件。這可能會導致嵌入式開發人員看到一行非常好的代碼,但是因為沒有包含必要的頭文件,編譯器會將其標記為錯誤,這表明有些內容沒有定義。

        l 注意丟失的分號。寫C代碼最常見的錯誤之一就是忘記分號(;)在語句的末尾。

        l 注意丟失的括號(})。括號是另一個常見的錯誤,要么是因為意外遺漏,要么是因為輸入錯誤變成了不同的字符。

        l 注意遺漏的逗號(,)。在復雜的定義中,很容易忘記逗號!

        一般來說,當一個奇怪的編譯器錯誤出現時,看看在那一行之前編譯了什么。很可能這就是錯誤所在!它可能是一行,半頁或者在一個完全不同的文件中。但是不要放棄!有了一些經驗,找到困難的最終成為第二天性。

        技巧9——優秀的程序員不一定寫更少的代碼行

        一個普遍的誤解是,一個好的程序員比一個普通的程序員能寫更少的代碼行來做一些事情。不要被這個想法所迷惑!一個好的程序員有一個經過深思熟慮和結構化的代碼庫,變量被很好地命名和封裝,系統中很少有全局變量,函數應該簡短明了。如果代碼看起來很混亂,寫多行代碼會更清楚,那么就寫吧!在嵌入式開發中,一個好的程序員寫干凈的代碼,容易理解和維護,而不是最少的代碼行!

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲日韩欧美黑人专区 | 日韩欧美亚洲一区 | 偷偷要色偷偷中文 | 亚洲欧美精品无人区国产一区 | 在线播放国产精品三级网 | 亚洲欧美国产97综合首页 |