c語言對象(函數,類,變量)的聲明與定義


最近在看一本《c缺陷與陷阱》,意識到在大型程序時對象的聲明與定義的重要性

普通變量的定義與聲明

每個外部對象都必須在程序的某個地方進行定義。因此如果一個程序中包含了語句

extern int a;//聲明變量a

那么,這個程序就必須在別處的某個地方包括語句

 int a;//代表定義外部int型變量a

或者 

int a=10;//定義變量a並初始化

這兩個語句既可以在同一個源文件中,也可以不在同一源文件中

 

 

若一個變量前加了static修飾符

static int a;//定義變量a,但變量a只在此文件中起作用

static修飾符不僅適用於變量,也適用於函數。如果一個函數f()調用函數g(),且只有該函數f調用函數g,那么就可以把函數f函數g寫在同一個文件中,並把函數g聲明為static型的, 

 表明這個對象或者函數的作用域只在此文件中。

 

 

 

函數的聲明方式

(作用域修飾符)返回值類型   函數名(參數表)

函數的定義方式

返回值類型  函數名 (參數表)

{

   函數體

}

 

 

對C++編譯器而言,當調用函數的時候,編譯器只需要看到函數的聲明。當定義類類型的對象時,編譯器只需要知道類的定義,而不需要知道類的實現代碼。因此,因該將類的定義和函數聲明放在頭文件中,而普通函數和類成員函數的定義放在源文件中。

這樣在用到對應的接口函數時只需包含xxx.h文件即可,在需要修改函數內容時只在xxx.cpp修改。如果需要修改接口則只需修改xx.h對應的接口,xxx.cpp對應的接口即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM