hello.c
#include <stdio.h>
#include "test.c" //引用test.c文件
extern void printLine() //这里定义的方法对吗?
{
printf("**************\n");
}
int main()
{
say();
return 0;
}
test.c
#include <stdio.h>
void say(){
printLine();
printf("I love imooc\n");
printf("good good study!\n");
printf("day day up!\n");
printLine();
}
是hello.c中的main函数调用say函数,这个say函数是定义在test.c中的。本质上是函数间调用,与文件无关。程序永远是从main函数开始运行的。
你这代码中有很多错误和不合理之处:
不应该直接在代码中include另一个函数定义文件,这样做会将test.c中的内容都包含到hello.c中,所以实际上最后main和say函数都是定义在hello.c中的。
而且在test.c中,say函数调用了printLine函数,但在之前却并没有声明printLine(声明在hello.c中)。
声明函数时不用写extern,函数默认就是external的(准确地说是previous linkage)。
正确的做法是:
一般来说将函数的定义写在某个.c文件中,将其声明写在.h中。函数在使用前需要函数声明,所以将函数声明(非定义)写到一个.h文件中,称为头文件。在其他需要调用这个函数的文件中只需include这个头文件就可以得到函数声明了。如果像你代码中那样直接include进.c文件,就会把函数定义也包含进来,这样可能造成程序中有多处该函数的定义,这是不合法的,编译器会报重复定义错误。
这个是hello.c调用test.c啊