extern:
在调用外部变量和函数之前,需要先声明他们。对外部变量用extern关键字开始。儿对于函数,此关键字可有可无。
多个变量被不同的编译单元(.cpp文件)定义,若无此关键字,编译器就会认为它需要处理的是一个不确定定义,这样就会导致连接器报错。因为其在多个编译单元中定义了。
static:
包含static关键字的变量和函数声明,只有在当前编译单元中才是可见的,称为静态连接。无此关键字的则可以从程序的任意编译单元中访问,称为外部连接。
通常情况下,会把external变量和函数声明放在头文件中,并且把该文件在所有需要他们的文件中包含一次:
#ifndef RANDOM_H
#define RANDOM_H
extern int randomNumabers[128];
void populateRandomArray();
#endif