8.11 头文件剖析:前向引用

8.11 头文件剖析:前向引用

什么是声明

声明:将一个标识符与某个C语言对象相关联(函数、变量等)
函数原型:提供给编译器做函数参数格式检查
变量声明:告诉编译器,这个变量在已经别处定义

可以声明的标识符

变量、函数
类型、类型标志
结构体、联合、枚举常量
语句标号
预处理器宏

什么是前向引用?

识符在声明完成之前就开始使用
标识符通常不能在完全声明之前使用
int i = sizeof(i);
C++的类成员

C语言允许前向引用的三个特例

  1. 隐式声明(C99/C++禁止)
  2. 语句标号(标号的作用域)
  3. 可以声明一个不完全类型,在被定义完整之前用于某些特定用

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;
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页