為什麼C 中,含有函式宣告的標頭檔案應該被包含在定義函式的原始檔中?

時間 2021-05-29 23:10:33

1樓:

如果,你在second. cpp裡面的function_1()裡呼叫了function_2(),就會編譯不通過。並且,會提示你找不到function_2的定義。

要不你試一下呢?

2樓:大JoeJoe

在實際的專案程式設計中

.cpp檔案中定義的函式分為兩種,一種是對外提供介面供外部呼叫的,一種是特定功能封裝成乙個函式,供前者呼叫,它們只在本檔案裡面呼叫,一般申明為static。

這時候存在乙個問題:

比如,你的function_1假如現在必須呼叫function_3才能完成任務,那就完蛋了,因為function_3定義在function_1後面,這個時候,最好的方法就是把所有函式的申明放到.hpp中,然後.cpp包含一起申明,相互呼叫時就不在乎函式的定義先後了。

這個時候

對於那些只在本檔案內部被呼叫的函式,可以在head_inner.hpp中申明,需要提供給外部的函式,可以申明在head.hpp中。

前者.cpp包含自己用

後者.cpp包含且提供給其他人。

為什麼c 要「在標頭檔案中宣告,在原始檔中定義」?

Coder 為什麼不推薦在標頭檔案中定義函式或者變數呢,只建議在標頭檔案中宣告變數和函式.要記住,每當你用乙個 include的時候,你就是把那個標頭檔案的內容搬到 include的位置 pragma once的作用是 在同乙個檔案中多次include同乙個標頭檔案的時候,保證該標頭檔案內容只被替換...

Linux 中如何快速檢視 C 庫函式的標頭檔案以及相應的函式資訊?

蒲公英 自從看了 Unix Linux程式設計實踐教程 五星推薦這本書 檢視標頭檔案和函式資訊非常方便。man k keyword grep name 查詢乙個man手冊中的簡短說明包含keyword的函式,name為函式名的關鍵字 可以不加管道 如man k timer grep set 查詢乙個...

C語言或者C 語言標頭檔案的意義是什麼,現代編譯器能否把這個給優化掉?

乙個小機械人 emmm暫時沒學到標頭檔案的真正意義,只從個新手的角度說通常你可以寫個include來簡化標頭檔案。但這樣做就很容易會出現莫名其妙有時還很難察覺的歧義錯誤,題主認為該怎麼解決這樣的問題呢? Kira 看了好幾個回答,都沒有回答到點上。可以看看我回答的另乙個類似的標頭檔案問題,裡面詳細講...