1樓:鬼火狼煙
雖然在標頭檔案中和正常的程式檔案中的**沒有本質區別,但是強烈不建議你把實現**放在標頭檔案中,標頭檔案中一般只適合放需要對外界透露介面的函式宣告,公有預編譯定義(#define),結構體以及類的宣告(非實現),公共型別(typedef),公共列舉(enum),這麼做的原因就是防止樓主所說的問題發生。
在.c檔案中,一個函式(lz所說的子程式)需要通過宣告和定義2個步驟來實現,而變數的傳遞是在函式被實現的時候才需要的,函式宣告的時候,只是通知編譯器該函式返回值,函式名,函式形參的型別,所以宣告的時候只需要給出形參的型別就可以了,比如void my_fun(int,int)而函式定義中,必須給出形參名,才可以在函式實現中使用這些形參,話說回來,實現的時候不給名稱,你如何在函式中用到這些變數?
#include的作用非常的大,不是僅僅複製檔案,避免重複寫**這麼簡單的,它的靈魂也在於宣告和定義分離,如果不這樣的話,你使用別人的庫還要把別人的源**也弄來,顯然是不可能的呵呵.
2樓:
非也,至於#include 原本就不是c語言的**,只不過是當初在設計第一代編譯器的時間使用的**,但是就是只是為了減少**兩,所以從本質上來說只不過是函式呼叫,但是隨著編譯器的進步,先前的#incldue一應變成c語言的**。其實質已經與函式呼叫類似。但是實質與函式呼叫還是有所不同的。
函式呼叫有其出口與入口,但是包含標頭檔案卻不同,它只是過程呼叫。
C語言 預處理命令中關於檔案包含問題
建立檔案時,選擇標頭檔案選項。寫法可參照等標頭檔案。以後使用時,用include包含進去即可。新建個檔案命名為啥啥啥。h,把你的 copy進去,然後把這個檔案扔進vc的include路徑去,這個路徑和你安裝的有關,可以在工程設定中找到,找不到你就搜尋一下,和它放在一起。新建一個標頭檔案如。加上這些巨...
c語言中檔案指標能不能作為引數傳遞
1.指標完全可以作為函式的引數進行傳遞,其實在c中,陣列作為引數傳遞,跟指標作為引數傳遞都很類似的,指標傳的是該指標指向的地址,而陣列引數則是將該陣列的首地址傳遞過去。2.檔案指標 在c語言中用一個指標變數指向一個檔案,這個指標稱為檔案指標。通過檔案指標就可對它所指的檔案進行各種操作。定義說明檔案指...
c語言中,帶引數的主函式,如何傳遞引數給它
不可能按值傳遞的,設想一下 type arr sizeof arr 為100萬了位元組,如果按照值傳遞,就要建立一個臨時變數temp也為100萬個位元組,效率豈不是太低了。再可能arr是堆記憶體,引數傳遞是要屬性相同,值相同,難道系統自行去new一段記憶體,這該使用者去釋放 還是系統自動 呢?在命令...