关于全局变量的使用的问题
在一个源程序的所有源文件中,一个全局变量只能在某个文件中被定义一次。我在头文件中对全局变量进行声明,在其他文件中对其进行定义并使用并没有问题。
但为什么我在头文件中对全局变量进行声明并定义赋值,在其他文件中用extern对其声明使用却出现编译器错误?
第一种情况没有问题:
//head.h
extern int i;
//main.c
程序代码:
#include<stdio.h> extern int i = 9; void main(){ printf("i = %d\n",i); i = 99; printf("i = %d\n",i); getchar(); }
但第二种情况就出现【无法解析外部符号int i】的编译器错误:
//head.h
extern int i = 1;
//main.c
程序代码:
#include<stdio.h> extern int i; void main(){ printf("i = %d\n",i); i = 99; printf("i = %d\n",i); getchar(); }
为什么用extern方式声明和使用全局变量时,不能在头文件中对全局变量进行定义呢?
[ 本帖最后由 f1989f2000 于 2013-2-5 16:15 编辑 ]