C/C++笔记
菜鸟笔记,私房菜。
外部变量
原帖:外部变量
方法一
实现从test2访问test1的变量
//test1.c
int COMMON_VALUE = 100;
//test2.c
extern int COMMON_VALUE;
如果test1.c中定义为静态变量,则在test2.c是无法访问
//test1.c
static int COMMON_VALUE = 100;
方法二
假设有这样几个文件commonDef.h, test1.c, test2.c
其中test1.c和test2.c包含公用的头文件commonDef.h
//commonDef.h
#ifndef __COMMON_DEF_H
#define __COMMON_DEF_H
static int COMMON_VALUE = 100;
#endif
static关键字保证了包含该头文件的编译单元分别拥有该变量的独立实体,如同在每一个源文件分别定义一次;若不加static,则会造成“redifinition”。
这时候在test1.c和test2.c直接#include"commonDef.h"即可。
方法三
//commonDef.h
#ifndef __COMMON_DEF_H
#define __COMMON_DEF_H
extern int COMMON_VALUE;
#endif
//test1.c
#include "commonDef.h"
int COMMON_VALUE = 100;
//test2.c
#include "commonDef.h"
也即在公用头文件中,使用extern关键字。然后再某一个源文件中定义一次,再在每一个使用它的编译单元中包含该头文件即可。