4.3 什么是声明,什么是定义
C语言中的对象必须有且只有一个定义,但它可以有多个extern声明。此处的对象跟C++中的对象无关,这里的对象只是跟链接器有关的“东西”,例如函数和变量。
“定义”又是一种特殊的声明,它创建了一个对象;“声明”简单的说明了在其他地方创建的对象的名字,它允许你使用该名字:
定义 只能出现在一个地方 确定对象的类型并分配内存,用于创建新的对象,int array[100]
相当于特殊的声明,它为对象分配内存;
声明 可以多次出现 描述对象的类型,用于指代其他地方定义的对象(例如在其他的文 件里),extern int array[ ];
声明相当于普通的声明,它所说明的并非自身,而是描述其他地 方的创建的对象;
extern 对象声明告诉编译器对象的类型和名字,对象的内存分配则在别处进行。
详细的声明规则,可参考第18章 声明。