C++定义全局变量的方法

我们想定义一个全局变量,能够在多个文件中使用

//hello.h

#ifndef HELLO_H_
#define HELLO_H_
extern int a;
void fun ();
#endif
//hello.c

#include 
#include "hello.h"
int a = 0;
void fun () {
	a = 1;
	printf("%d\n",a);
}

//main.c



#include 
#include "hello.h"
int main () {
	fun();
	a = 10;
	printf("%d\n",a);
	return 0;
}

输出结果为1,10;
extern关键字来声明变量为外部变量,而为什么要在hello.h文件中已经extern int a了还要再在hello.c文件中定义int a呢?

这是因为extern仅仅是作为一个声明,声明我要定义一个外部全局变量a可以在其他文件和模块中使用,但此时并为给a分配空间。
而int a = 0;则才是真正对a的定义,为其分配空间。
那么问题又来了,我们为什么不写成extern int a = 0;的形式不是更简单吗?

这就涉及到c的一个基本知识点了也就是extern int a = 0和int a = 0同样都是对a的定义,只不过第二种是省略了extern而已。

你可能感兴趣的:(C++小常识)