C语言内存笔记1:全局变量与函数的声明与定义

1 多文件编译不使用#include

#include
int val;
int val;	//第二次出现 int val,则表示声明
int main(){
	return 0;
}

为了防止出现上述问题,全局变量在声明的时候,一律加上extern进行修饰,即external int val;

声明其他文件中的全局变量,不加extern也是可以的,当然,这只是不推荐而已,但工作中经常要看别人写的程序,如果别人没有加extern时,则需要明白下面的规则。首先,同时在两个文件中出现全局变量int val;是可以的,这里会被编译器当成是一个定义,另一个声明;但却不能同时出现int var=10,因为这两个都是定义,有初始化了,当然,只在其中一个文件中出现全局变量int var=10,另一个文件中出现全局变量int val;是可以的(一个被当成定义,另一个被当成声明);如果某个文件中出现int var=10,另一个文件虽然不能出现int var=100,但却可以出现static int var=100,对于这个文件,使用var时为就近原则,即使用静态全局变量。

不同文件中的函数,可以类比全局变量的使用,即推荐使用extern声明,但如果没加也是可以,如果添加了static,则只能在本文件使用。

2 多文件编译使用#include

假如int val;写在了其他文件中,那么也可以使用#include将那个文件包含进来,这样就可以不写extern

你可能感兴趣的:(C语言,c语言)