謹防c++頭文件安全保護宏重名
在c++中,為了防止一個頭文件在同一個文件中include兩次,導致類對象重復聲明(定義),我們可以使用如下結構進行保護
#ifndef XXX #define XXX 頭文件內容 #endif
這里的XXX就是一個隨便定義的一個宏名,IDE一般是用頭文件名的大寫來自動生成。
當寫的項目足夠大了,又經歷過一定程度的重構,就要小心了,這里的宏名不要重復了!!!
如果你看到了以下一些異常錯誤,就要考慮是不是出現了這些問題。
1. 錯誤:‘***’不是一個類型名
這個編譯錯誤極少出現,就是因為重名的宏導致第二個類根本就沒有被聲明(定義)
2. 錯誤:對不完全的類型‘***’的非法使用
進行了類的前置聲明,但是類的頭文件沒有加進來,因為被屏蔽掉了。
3. 警告:檢測到調用 delete 運算符時可能出現的問題:附注:析構函數和類特定的 delete 運算符均不會被調用,即使它們在類定義時已經聲明。
這更是千年難遇的警告,原因同上。
4. 交換兩個頭文件的順序,導致編譯結果不一致。
OK,100%是這個原因。
浙公網安備 33010602011771號