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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值