謹防c 標頭檔案安全保護巨集重名

2021-09-09 02:59:01 字數 593 閱讀 2786

在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 使用尖括號 和雙...