我已經詳細閱讀了可能的重複,但是沒有一個答案有下沉C中的頭文件和源文件如何工作?
TL;博士:在C
如何相關的源文件和頭文件?項目在構建時隱式地清理聲明/定義依賴項嗎?
我試圖瞭解編譯器如何理解.c
和.h
文件之間的關係。
鑑於這些文件:
header.h:
int returnSeven(void);
由source.c:
int returnSeven(void){
return 7;
}
的main.c:
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int main(void){
printf("%d", returnSeven());
return 0;
}
這混亂會編譯?我目前正在做我的工作,來自Cygwin的NetBeans 7.0和gcc,它可以自動執行大部分構建任務。在編譯項目時,涉及的項目文件將根據header.h
中的聲明,明確列出source.c
?
是的,這將彙編(爲什麼你認爲這是一個「爛攤子「?)。要學習的概念是**編譯單元**和**鏈接**。 – Jesper 2011-05-05 21:56:09
謝謝** Jesper **;哈哈,這不是一團糟,我想這個詞最適合描述我的大腦,可以在3本初學C級書籍之間閱讀。我肯定會研究*編譯單元*和*鏈接*,但爲了專注於學習語法,我會讓** NetBeans ** + ** gcc **爲我解決這個問題。鑑於這種情況,只要給定的頭文件在項目的其他地方存在定義的聲明,那麼包含該頭文件足以提供對定義的功能的訪問,編譯器會對這些細節進行整理? – Dan 2011-05-05 22:00:39
'header.h'需要包括守衛;) – alternative 2011-05-05 22:01:22