因为你的数组定义在头文件中,也就是实体。它的作用范围是全局的,除非你加static。所以当你在两个或以上的.c文件中包含这个头文件的时候,就相当于定义了两个或以上的相同名字的实体,而且作用范围都是全局的,这显然是错的。
当两个同名的static变量在不同的源文件中,编译器会给每个变量分配不同的存储空间,这是可以的,而当是全局变量时就会出现错误,因为编译器无法为你定义的实体分配存储空间。
所以一般的原则就是只在.h中声明,这样就算重复包含也不会出错。但是要加上预编译头。像int a = 5;这样的实体就不要放在头文件中了。
|
|