函数和变量都有声明和定义两个写法。声明的目的是告诉别的代码这个变量的名称,而定义比声明多了一个功能,除了告知名称以外,还会为这个变量分配内存。
对于函数来说,加不加extern都没有关系,因为有函数体一定是定义,加extern也会被忽略,而没有函数体的就是声明,
int add(int a, int b);
等价于 extern int add(int a, int b);
如果是变量的话
int a; // 定义了一个变量a
extern int a; // 声明了一个变量a
变量可以有任意个声明,但是只能有一个定义,全局变量定义在多个文件中,只能有一个文件中的不加extern,其余的都必须加extern表示声明。
说明:在.h文件中,一般用于声明一些变量.不是定义,所有的定义及实现都是在.c或.cpp文件中.
所以,要特别注意
定义全局变量的时候,优其是全局变量的时候,是要特别注意的:
全局变量的声明一般写在 .h文件中,加上extern,因为不加就是定义变量了,所以不对.这样凡是#include 这个.h文件的 文件都可以访问这个全局变量. 但是这个变量的定义一定在.c或.cpp文件中.而且只能有一个这个变量的定义.