原因
-
通過頭文件來調用庫功能。在很多場合,源代碼不便(或不準)向用戶公布,只
要向用戶提供頭文件和二進制的庫即可。用戶只需要按照頭文件中的接口聲明來調用庫
功能,而不必關心接口怎么實現的。編譯器會從庫中提取相應的代碼。 -
頭文件能加強類型安全檢查。如果某個接口被實現或被使用時,其方式與頭文件
中的聲明不一致,編譯器就會指出錯誤,這一簡單的規則能大大減輕程序員調試、改錯
的負擔
規范
在開頭和結尾應該加上防止多次引用的宏
//headfilie.h
#ifndef _HEADFILE_H_#define _HEADFILE_H_//聲明#endif
未初始化的全局變量將會放到elf
文件的.bss
段中,.bss
不占據實際的磁盤空間,只在段表中記錄大小,在符號表中記錄符號。當文件加載運行時,才分配空間以及初始化。因此可以多次聲明。
參考博客
- 在源文件(.c)和頭文件(.h)中聲明和定義的區別——C語言
- bss段不占據磁盤空間的理解
- extern的使用詳解(多文件編程)——C語言