C语言会在包含的位置出展开头文件,当我们包含一个 源文件是 ,同样源文件也将会展开 ,而 C 语言的编译方式为分开编译成目标文件。。这样包含就会造成方法重定义的错误。
如
a.c
void a(){
printf(" a function ");
}
b.c
#include "a.c"
int main(){
printf("b.c");
return 0;
}
在C 语言编译是实行 分开编译 即 a.c ,b.c各编译一次生成自己的目标文件 ,也就是有两个 ,b.c编译中,展开a.c,重新生成 a() 函数,两个目标文件有两个一样的函数。故出现错误 .
当我们在方法前加static时,表示为私有的 。a.c b.c 各有一个私有的 a() 函数 ,似有函数不会有冲突.