我已经详细阅读了可能的重复,但是没有一个答案有下沉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