轉自:http://blog.csdn.net/hazir/article/details/38600419 今天下午遇到一個頭文件相互包含而導致的編譯問題,花了我不少時間去調試沒找到問題,最后晚上跟師兄討論不少時間,突然有所頓悟! 問題重現 我把問題脫離於項目簡單描述一下:我寫了一個函數 ...
隨着代碼越寫越長,一個源文件的體制越來越臃腫。於是提倡將代碼寫到不同的多個源文件中去。將代碼寫到多個源文件中去就會遇到各個源文件中函數與變量的調用規則問題。 通常人們習慣性的把宏定義 結構體 聯合體 枚舉 外部變量和外部函數聲明等寫入到頭 文件.h中去,而把函數的聲明 變量定義等寫入到.c文件中去。當某一.c源文件需要調用某一函數的時候,只要將包含這個函數聲明的頭文件包含到本文件中 來就可以了。如 ...
2015-11-02 17:33 0 2385 推薦指數:
轉自:http://blog.csdn.net/hazir/article/details/38600419 今天下午遇到一個頭文件相互包含而導致的編譯問題,花了我不少時間去調試沒找到問題,最后晚上跟師兄討論不少時間,突然有所頓悟! 問題重現 我把問題脫離於項目簡單描述一下:我寫了一個函數 ...
頭文件和源文件 由於頭文件是為了重用,所以在一個復雜的程序中,頭文件可能會被間接地重復包含。如果頭文件里面都是函數聲明,那問題還不大。如果頭文件里面有函數定義(如程序11.2),那么就會出現函數被重復定義的錯誤,程序將無法運行。我們可以采用函數聲明和定義分離的方式:把所有的聲明都放在 ...
一、類嵌套的疑問 C++頭文件重復包含實在是一個令人頭痛的問題,前一段時間在做一個簡單的數據結構演示程序的時候,不只一次的遇到這種問題。假設我們有兩個類A和B,分別定義在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是這樣的寫法當然是錯誤 ...
C 頭文件 頭文件是擴展名為 .h 的文件,包含了 C 函數聲明和宏定義,被多個源文件中引用共享。有兩種類型的頭文件:程序員編寫的頭文件和編譯器自帶的頭文件。 在程序中要使用頭文件,需要使用 C 預處理指令 #include 來引用它。前面我們已經看過 stdio.h 頭文件,它是 ...
頭文件主目錄include 頭文件目錄中總共有32個.h頭文件。其中主目錄下有13個,asm子目錄中有4個,linux子目錄中有10個,sys子目錄中有5個。這些頭文件各自的功能如下,具體的作用和所包含的信息請參見第14章。 <a.out.h>:a.out頭文件,定義了a.out ...
問題來源: 加入你有一個C源文件,它包含了多個頭文件,比如頭文件A和頭文件B,而頭文件B又包含頭文件A 結果: 該源文件包含了頭文件A兩次,這時,編譯時會報大量的重復定義錯誤。 解決方案: 使用宏定義 在自定義的頭文件開頭寫上 ...
我們在使用c編程的時候經常會遇到頭文件,前段時間我自己做了個小項目的時候,也遇到了關於頭文件的問題。 預處理器發現#include 指令后,就會尋找后跟的文件名並把這個文件包含的內容包含到當前文件中。被包含文件的文本將替換源文件中的#include 指令,就像您把被包含文件中的全部內容鍵入 ...
簡單的說其實要理解C文件與頭文件(即.h)有什么不同之處,首先需要弄明白編譯器的工作過程,一般說來編譯器會做以下幾個過程: 1.預處理階段 2.詞法與語法分析階段 3.編譯階段,首先編譯成純匯編語句,再將之匯編成跟CPU相關的二進制碼,生成各個目標文件 (.obj文件)4.連接階段,將各個目標 ...