//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...