我已经阅读了一段时间有关 C 语言的资料,决定写一个简单的附加程序。我的理解是,C 的头文件是“接口”(就像 Java 和其他语言一样),但你也可以定义变量,它们既可以具有固定值,也可以没有值。
于是我写了这个:
#include <stdio.h>
#include <stdlib.h>
#include "sample.h"
int main(int argc, char** argv) {
printf("hello World\n");
add(12, 18);
return (EXIT_SUCCESS);
}
int add(int a, int b){
int value = a+b;
printf("value = %d\n", value);
return 0;
}
它有一个看起来像这样的头文件:
#ifndef SAMPLE_H_GUARD
#define SAMPLE_H_GUARD
int add(int a, int b);
#endif
我认为头文件的定义在于定义add函数的使用方式,所以我只需要调用add函数即可 - 根据我的理解,我需要定义add函数的规则,然后实现add函数的功能...但是我对头文件的定义仍感到困惑。
此外,我阅读的许多资料都显示一个头文件用于多个C文件,而今天的许多项目每个C文件都有一个头文件,也就是说Sample.h属于Sample.c,没有别的文件。
能否有人解释一下这个问题?
我可以这样做吗:
main.c:
#include <stdio.h>
#include <stdlib.h>
#include "sample.h"
int main(int argc, char** argv) {
printf("hello World\n");
add(12, 18);
return (EXIT_SUCCESS);
}
add.c
#include <stdio.h>
#include <stdlib.h>
#include "sample.h"
int add(int a, int b){
int value = a+b;
printf("value = %d\n", value);
return 0;
}
sample.h
#ifndef SAMPLE_H_GUARD
#define SAMPLE_H_GUARD
int add(int a, int b);
#endif
我相信我正在阅读的书籍:C编程语言中有一个计算器示例被分成了这样,我的问题是C如何知道add在哪里定义?它根据头文件的规则进行操作,但不知道实际实现在哪里……
他们将文件拆分的示例没有像#include "add.c"
这样的东西,他们只是在实现或使用此功能的文件中包含头文件。
注意:显然计算器示例和我的示例会有所不同,但基本上是相同的 - 对于那些有这本书的人来说。我只是迷失在如何有效和高效地使用头文件上。
sample.h
这样的头文件并不是真正必要的 - 在第一个示例中,您可以将add()
改为在main.c
顶部声明并在底部实现的静态函数。 - Jonathan Leffler