文件链接规则
链接相互独立的模块需要解析外部引用,关键的规则是外部非静态变量只能在一个地方定义.
通过使用关键字extern和进行初始化,构成一个变量的定义.
使用关键字extern但没有初始化,只能构成declaration而不是definition.
如果遗漏extern,不论是否初始化,结果都是定义而非声明.
//程序prog1.cpp
char c; //变量c的定义
//程序prog2.cpp
extern char c; //the declaration of C
//program prog3.cpp
extern int n = 5; //the definition of c
//program prog4.cpp
char c; //illegal, secend definition
extern float n; //illegal,type error
extern int k; //illegal, no definition
typedef声明对它所在的文件是局部的,枚举常量声明在它所在的文件内部有链接,
因此多文件程序中需要的枚举成员和typedef成员应置于头文件中.
类中定义的枚举成员对于该类是局部的,访问他们续使用作用域解析操作符.
建议:
需牢记,每个文件在概念上都是一个模块.- 外部声明应放在头文件中,代码应放在代码文件中.
浙公网安备 33010602011771号