在c++中,為了防止乙個標頭檔案在同乙個檔案中include兩次,導致類物件重複宣告(定義),我們可以使用如下結構進行保護
#ifndef ***
#define ***
標頭檔案內容
#endif
這裡的***就是乙個隨便定義的乙個巨集名,ide一般是用頭檔名的大寫來自動生成。
當寫的專案足夠大了,又經歷過一定程度的重構,就要小心了,這裡的巨集名不要重複了!!!
如果你看到了以下一些異常錯誤,就要考慮是不是出現了這些問題。
1. 錯誤:『***』不是乙個型別名
這個編譯錯誤極少出現,就是因為重名的巨集導致第二個類根本就沒有被宣告(定義)
2. 錯誤:對不完全的型別『***』的非法使用
進行了類的前置宣告,但是類的標頭檔案沒有加進來,因為被遮蔽掉了。
3. 警告:檢測到呼叫 delete 運算子時可能出現的問題:附註:析構函式和類特定的 delete 運算子均不會被呼叫,即使它們在類定義時已經宣告。
這更是千年難遇的警告,原因同上。
4. 交換兩個標頭檔案的順序,導致編譯結果不一致。
ok,100%是這個原因。
C 標頭檔案保護符
在看 的時候經常會碰到 ifndef endif這樣的指令,這個的作用是標頭檔案保護符,用於防止同一標頭檔案的多次包含 預處理變數有兩種狀態 已定義和未定義 define 命令使得某一預處理變數變為已定義 ifdef 命令當且僅當變數已定義時成真 ifndef命令當且僅當未定義時成真 若檢查結果為真...
C 標頭檔案 巨集 編譯問題
2019 02 15 小記 c 標頭檔案的防重複包含是針對同乙個原始檔而言 原因 include 標頭檔案就是一段 的拷貝,標頭檔案中若有型別定義等,重複包含就會造成編譯錯誤,若無型別定義等不造成重複定義的,則無需防重複包含機制 防重包含機制 pragma once ifndef macro def...
c語言的標頭檔案 巨集 指標
include是檔案包含命令,主要用來引入對應的標頭檔案。include的處理過程很簡單,就是將標頭檔案的內容插入到該命令所在的位置,從而把頭檔案和當前原始檔連線成乙個原始檔,這與複製貼上的效果相同。include有兩種使用方式 include include myheader.h 使用尖括號 和雙...