標頭檔案,庫檔案,重複包含

2022-04-11 09:20:26 字數 702 閱讀 9254

//

a.c#include

#include

"a.h

"#include

"b.h

"void main(void)//

a.c end

#include "

b.h"

end

int i = 3;//

b.h end

/*本例中主程式在a.c中定義。

正常情況下,這三個檔案都在同一目錄下,進入該目錄,然後執行

cc -c a.c表示編譯a.c檔案,編譯的時候會把頭檔案中的內容都載入進來,在此例中,#include "a.h",而a.h中同樣存在include,這時,a.h先把b.h中的內容:int i =3;載入進來,然後a.c在把a.h中的內容載入進來,所以a.c檔案中的#include a.h最終被替換為為int i=3;等把全部的標頭檔案載入進來以後,然後生成二進位制格式的檔案,這就是編譯的過程。

編譯過後本目錄下就會出現a.o這個二進位制檔案,然後用命令cc -o a a.o

生成最終的可執行檔案a,

*//*

此例中,當執行cc -c a.c時,將所有的標頭檔案都載入進來,主程式將變為

int i = 3;

int i = 3;

void main(void)

顯然,i被重複定義了,所以編譯會報錯

*/

標頭檔案重複包含

如果某個標頭檔案被多次包含,則在vc編譯器中編譯,會丟擲 重複定義 錯誤。為了避免同乙個檔案被重複包含多次,c 提出了2種解決方案。1 ifndef some file h define some file h endif 在檔案末端 2 pragma one ifndef define endif...

標頭檔案重複包含

如果某個標頭檔案被多次包含,則在vc編譯器中編譯,會丟擲 重複定義 錯誤。為了避免同乙個檔案被重複包含多次,c 提出了2種解決方案。1 ifndef some file h define some file h endif 在檔案末端 2 pragma one ifndef define endif...

防止標頭檔案重複包含

在程式設計中,經常會遇到這種情況,我們的某乙個程式會呼叫多個dll,因此需要包含多個標頭檔案,不同的標頭檔案可能包含了相同某乙個下一級標頭檔案,這就可能會導致標頭檔案的重複包含,從而導致變數 函式的重定義等等,為了解決這個問題,就要求我們在編寫dll的時候,使用 ifndef define endi...