8.11 头文件剖析:前向引用
什么是声明
声明:将一个标识符与某个C语言对象相关联(函数、变量等)
函数原型:提供给编译器做函数参数格式检查
变量声明:告诉编译器,这个变量在已经别处定义
可以声明的标识符
变量、函数
类型、类型标志
结构体、联合、枚举常量
语句标号
预处理器宏
什么是前向引用?
识符在声明完成之前就开始使用
标识符通常不能在完全声明之前使用
int i = sizeof(i);
C++的类成员
C语言允许前向引用的三个特例
- 隐式声明(C99/C++禁止)
- 语句标号(标号的作用域)
- 可以声明一个不完全类型,在被定义完整之前用于某些特定用
途
C语言中的标识符
Object type
Function type
Incomplete type
不完全类型
void
an array type of unknown size :int a[];
a structure or union type of unknown content
不完全类型的前向引用的局限性
只能使用其中的一些特性:type
有些property不能使用:变量值、结构成员、大小
代码
typedef struct PERSON person;
struct person;
typedef struct PERSON{
int age;
struct PERSON *p1;
person *p2; //不会自动前向声明
int num;
}person;