-
根據我對 keil 的經驗,標頭檔案最適合用於描述某些函式,而不是定義變數或任何東西,變數最好在主函式上方或內部定義。
例如,如果你在 main() 函式中呼叫 delay() 函式,那麼你最好在標頭檔案中定義它,當然,如果你將 delay() 函式體寫在 main() 函式上方,你就不能定義這個標頭檔案。 標頭檔案的目的是告訴您此函式存在。
不同的編譯器是不同的,比如keil,Ya的函式都是寫在一張紙上的,這樣查閱比較麻煩,所以查閱標頭檔案比較方便,如果你用CW編譯飛思卡爾晶元,標頭檔案不是很重要,因為CW函式可以單獨編寫, 然後集中編譯。
有點囉嗦,呵呵。 希望對你有所幫助。
忘了提系統的標頭檔案(例如,定義了你的MCU埠和暫存器的名稱,這是必需的,並且在寫入時根據其中的名稱分配位元組。
-
我有一本關於微控制器原理和控制技術的書。 不過,我懶得打字!
-
它是宣告對其他檔案中的函式的呼叫。
-
1. 事實上,編寫乙個 C 語言程式可以完全消除對頭檔案的需求。 對於 include 指令,編譯過程只需在預處理階段將包含的檔案以文字形式替換為 include 所在的行。 可以看出,標頭檔案的內容也是由編譯器編譯的(經過預處理),如果把頭檔案的內容寫在原始檔中,就可以不用include了。
如果你學習C語言,你應該能夠編寫標頭檔案(是否有必要是另一回事)。
標頭檔案的內容通常是函式宣告、巨集、內聯函式等。 如果只有乙個原始檔,則完全可以不使用標頭(儘管使用現有的標頭檔案可能更方便)。 但是,當需要在多個檔案中多次使用同乙個宣告等時,複製會明顯增加維護成本(一旦更改了乙個原始檔,就需要將其複製貼上到另乙個原始檔中),因此很明顯,您應該使用標頭檔案來減輕負擔。
標頭檔案將包含在多個原始檔中以生成多個物件,因此不應將函式和全域性靜態物件的定義放在標頭檔案中(而只能放在宣告)中,以避免鏈結器出現重複的定義錯誤(並且通常不應在乙個原始檔中包含另乙個原始檔)。 因此,通常習慣使用標頭檔案對應原始檔,並且主檔名相同,以方便檢視對應關係。 此外,函式和物件宣告可以不對應原始檔,而是對應於已經編譯的外部靜態庫檔案(例如
lib),無需再次編譯,C標準庫就是乙個例子。
-
C 當然,是的。
-
C 頭當然是用 C 寫的,而頭通常用 include 寫""包含。
標頭檔案的存在只是為了方便,不一定是為了方便它們。
你不需要對頭做任何事情,比如說你用乙個數學函式 sin() 來求正弦曲線,那麼你就得用 include,因為 sin() 函式是在標頭檔案中定義的,有些標頭檔案不僅有函式的定義,還有實現,有些標頭檔案只有宣告, 但實現在庫檔案(lib 檔案或 DLL 檔案)中。
如果你完全有能力實現乙個新的 sin() 來自己找到正弦值,那麼就沒有必要使用系統值或其他人的正弦值,也不需要使用別人的標頭檔案。
-
C 標頭可以與任何文字輸入軟體以及記事本一起使用,只要將擴充套件設定為。 h
當然,在專業的程式設計環境(如Visual Studio或Visual C++)中編寫會很好。
如果你懂C語言,你就可以製作標頭檔案了,你還需要乙個對應標頭檔案的原始檔,因為標頭檔案一般只負責宣告,而原始檔負責定義。
MCU C語言程式設計入門課程難不多,說起來不好,首先要了解的是學習MCU C語言時要明白這兩樣東西是什麼? 微控制器的入門程式設計主要是學習C語言,其次是電路和程式語言。 >>>More
LZ也明白同樣的事情,確實是避免重複,但不是避免重複宣告,而是避免重複定義。 一般來說,C 的所有宣告都是可重複的,只要重複的宣告是相同的。 但是,即使定義相同,也不應重複定義,重複定義將導致編譯錯誤。 >>>More