c模塊化編程


C語言模塊化編程(封裝)

  • 模塊即是一個.c 文件和一個.h 文件的結合,頭文件(.h)中是對於該模塊接口的聲明。模塊化的實現方法和實質:將一個功能模塊的代碼單獨編寫成一個.c文件,然后把該模塊的接口函數放在.h文件中。
  • 對外發布的模塊調用本質上是一個編譯好的.so或.a或.o的二進行制文件加一個.h文件的組。
  • 不要在.h文件中定義變量,如果不同的模塊包含該.h文件,則在不同的模塊中該變量對應不同的地址。
  • 模塊內的函數和模塊內的全局變量需在.c 文件開頭冠以static 關鍵字聲明,一方面是限定了函數的作用范圍只是在本模塊中起作用,另一方面也給人傳達這樣的信息:該函數不會被其他模塊調用。
  • 函數體內,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變,賦值操作除外。
  • 一個模塊提供給其它模塊調用的外部函數及數據需在.h 中文件中冠以extern 關鍵字聲明。
  • extern會破壞模塊的封裝性,不建議使用, 因此extern一般用於全局變量的聲明。

extern的預處理示例:

/* in var_a.h */ #ifdef VAR_GLOBAL #define VAR_EXT
#else
#define VAR_EXT extern
#endif VAR_EXT int var1; VAR_EXT int var2;

  如果var_b.h包含了var_a.h且在var_b.h中有以下宏定義

#define VAR_GLOBAL

  由於VAR_GLOBAL被定義為空,於是變量展開為

int var1; int var2;

  如果在var_b.h包含了var_a.h但在var_b.h中沒有以上宏定義則變量展開為

extern int var1; extern int var2;


免責聲明!

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



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