1.標頭檔案用於宣告而不是用於定義
extern int ival = 10; //初始化了,為定義,不適合放在標頭檔案中
double dval; //沒有extern,是定義,不適合放在標頭檔案中
關於標頭檔案不應該含有定義這一規則,有三個例外:
標頭檔案可以定義類、值在編譯時就已知道的const物件和inline函式。這些實體可在多個原始檔中定義,只要每個原始檔中的定義是相同的。
2.預處理器
(1)標頭檔案經常#include其他的標頭檔案。比如某些類的標頭檔案必須包含string庫
(2)避免多重包含,在編寫標頭檔案之前,需要引入一些額外的預處理器設施。預處理器允許我們自定義變數。預處理器變數的名字在程式中必須是唯一的。任何與預處理器變數相匹配的名字的使用都關聯到該預處理器變數。
為避免名字衝突,預處理器變數經常用全大寫字母表示。
預處理器變數有兩種狀態:已定義,未定義。
#define指示:接受乙個名字並定義該名字為預處理器變數。
#ifndef指示:檢測指定的預處理器變數是否未定義。如果預處理器變數未定義,那麼跟在其後的所有指示都被處理,直到出現#endif
#ifndef f1_h
#define f1_h
#endif
注意:標頭檔案應該含有保護符,即使這些標頭檔案不會被其他標頭檔案包含。編寫標頭檔案保護符並不困難,而且如果標頭檔案被包含多次,它可以避免難以理解的編譯錯誤。
3.使用自定義的標頭檔案
#include指示接受兩種形式:
#include<>: 標準標頭檔案
#include" ": 非系統標頭檔案,非系統標頭檔案的查詢通常開始於原始檔所在的路徑。
4.using宣告
格式:using namespace::name;
一旦使用了using宣告,我們就可以直接引用名字,而不需要再引用該名字的命名空間。
5.使用標準庫型別的類定義
如果在標頭檔案中放置using宣告,就相當於在包含該標頭檔案的每個程式中都放置了同一using宣告,不論程式是否需要using宣告。
注意:通常標頭檔案中應該只定義確實必要的東西。
C 預處理器 標頭檔案 檔案讀寫
預處理器是再變異之前做的一些工作 include 包含乙個原始檔 常見的有 include就是從系統庫中獲取stdio.h,並新增到當前文字中。而 include header.h 則是告訴預編譯器 cpp 從當前目錄中新增header.件到當前文字中 defind定義巨集 巨集的意思就類似乙個誰都...
預處理器小結
預處理器發生在程式被編譯之前,所有的預處理器指令都以 開頭。1.include預處理器指令 使指定檔案的乙個副本被包含到指令所在的位置。include 與 include filename 區別 簡單不加以說明 include 指令用於包含標準類庫標頭檔案,也可以用於由多個原始檔組成的程式。2.in...
預處理器簡介
預處理是c編譯器做的第一件事情,主要是做一些文字方面的工作。包括 刪除注釋 插入被 include包含的檔案 定義和替換由 define指令定義的符號以及 的部份內容,和條件編譯。預定義符號 預定義符號如下表所示 file 進行編譯的檔名 line 檔案的當前行號 date 檔案編譯的日期 time...