声明和定义

时间:2010-07-27 09:21:25

标签: c

仍然与C语句中的声明和定义混淆: 如果头文件是这样的:

#ifndef _BASIC_H_
#define _BASIC_H_

void test();
extern int i; //define or declare
#endif

并且两个源文件f1.c和f2.c包含此标头,然后一个源文件需要定义变量“i”。

但是如果头文件是这样的:

#ifndef _BASIC_H_
#define _BASIC_H_

void test();
int i; //define or declare
#endif

和两个源文件f1.c和f2.c,包含这个头文件而没有在任何文件中定义变量“i”,当我使用变量时它仍然存在。
我的问题是定义变量的时候。

由于

1 个答案:

答案 0 :(得分:8)

定义变量是指为存储分配内存并为其分配值。声明是指当前存在具有特定名称和类型的变量,但已经为其分配了内存。

extern关键字的使用意味着您要声明变量但不定义变量。

就您的具体问题而言,您的第一个例子是声明,第二个答案是定义。