8.11 標頭檔案剖析:前向引用

yzm65580952發表於2020-10-28

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;

相關文章