1. 程式人生 > >C++ 防止標頭檔案重複引用

C++ 防止標頭檔案重複引用

C++標頭檔案的重複引用

就有點類似於鑽石繼承(菱形繼承) 比如有 a.h b.h c.h和d.h四個標頭檔案 其中,b和c需要#include"a.h" 而d需要#include"b.h" #include"c.h" 這樣編譯的時候肯定會報錯,因為d包含了兩次a.h.

C++工程的預編譯就是將引用檔案的程式碼拷貝過來,就如上面所說:在預編譯的時候,d.h的檔案,會將b,c檔案的程式碼拷貝過來,但是,b,c檔案都引用了a檔案,這樣,理論上,d檔案中就會包含兩份a檔案的程式碼,這樣,在編譯的時候就會報錯,因此我們需要使用#ifndef #end if 機制來避免這種情況的發生。

#ifndef QTAPP_H
#define QTAPP_H

/*

類體

*/

#endif // QTAPP_H

注意最後的#endif  這個不要丟,不然會出現問題,另外在所有的類中儘量都用這種方式來避免檔案的重複引用

 注意 要大寫!!!!!!!!!

相關推薦

C++ 防止檔案重複引用

C++標頭檔案的重複引用 就有點類似於鑽石繼承(菱形繼承) 比如有 a.h b.h c.h和d.h四個標頭檔案 其中,b和c需要#include"a.h" 而d需要#include"b.h" #include"c.h" 這樣編譯的時候肯定會報錯,因為d包含了兩次a.h.

初夏小談:C/C++防止檔案重複包含的兩種方法及區別

防止標頭檔案被重複包含的兩種方式: 1.條件編譯的巨集 2.#pragma once 先來說說第一種: #ifndef __HEADNAME__H__ #define __HEADNAME__H__ //... //標頭檔案 #endif C/C++標準支援

C/C++避免檔案重複包含的方法

C/C++避免標頭檔案重複包含的方法 1. #ifndef 2. #pragma once 3. 混合使用 在實際的程式設計過程中,因為會使用多個檔案,所以在檔案中不可避免的要引入一些標頭檔案,這樣就可能會出現一個頭檔案被 include

C/C++由於檔案重複引入引起的成員或類重複定義的解決辦法

報錯資訊: ../src/Circle.h:10:14: error: redefinition of 'PI' const double PI=3.14159;             

[C語言專案]防止檔案和全域性變數重複定義

昨天下午將全域性變數定義在H檔案中導致連結時提示變數在多個obj檔案內重複。 解決辦法如下: 將變數移入C檔案中進行定義,然後在H檔案中加入extern在變數之前。 這樣當其它C檔案引用該全域性變數時就會去連結這個變數符號而不是重新生成。 另附防止H檔案被重複包含的處理方

如何防止檔案重複包含或引用?

一、#pragma once ( 比較常用) 只要在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次,這條指令實際上在VC6中就已經有了,但是考慮到相容性並沒有太多的使用。 #pragmaonce是編譯相關,就是說這個編譯系統上能用,但在其他編譯系統不一定可以,也就

C++/C防止檔案重複包含的解決辦法及區別

為了避免同一個檔案被include多次,C/C++中有兩種方式,一種是#ifndef方式,一種是#pragma once方式。在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。  方式一:   #ifndef __SOMEFILE_H_

怎樣防止檔案重複引用

方式一:條件編譯: #ifndef #define ......//一些宣告語句 #endif 這種方式依賴於巨集名稱不能衝突,而且這種方式可以保證同一個檔案不被包含多次,也能保證內容完全相同的兩個檔案不會不小心同時包含。但是,如果巨集名稱相同,

C/C++——檔案重複包含問題

C++程式設計中,一般將類的宣告,類的定義分開,將類的宣告放在.h的標頭檔案中,而將類的定義放在.cpp的原始檔中,這樣我們的程式設計起來更加的模組化也清晰明瞭。但是,這樣的設計也會帶來一些問題,一個典型的問題就是重複定義問題。如果從一個類派生出一個類,派生類宣告時需要包含

如何防止檔案重複包含、巢狀包含

【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inclu

如何防止檔案重複包含

在windows平臺下,有一個很方便的巨集:  #pragma once 指定當前檔案在構建時只被包含(或開啟)一次,這樣就可以減少構建的時間,因為加入#pragma once後,編譯器在開啟或讀取第一個#include 模組後,就不會再開啟或讀取隨後出現的相同#includ

防止變數重複定義、檔案重複包含、巢狀包含

【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #include "x.h"#include "

C++檔案重複包含問題分析及解決方案

一、標頭檔案重複包含問題分析 1) 問題重現 舉例說明。假設在某個C++ 標頭檔案 或 原始檔 中,包含了A.h和B.h兩個標頭檔案: #include "A.h" #include "B.h" 事實上,在標頭檔案B.h中也包含了標頭檔案A的引用,即: #include"A

關於C/C++檔案重複定義的思考

1.什麼叫重複定義 我們在寫大型專案的時候,檔案多,關係複雜。往往會引起標頭檔案重複定義的問題。 什麼叫標頭檔案重複定義呢? 舉個最簡單的例子: 有一個頭檔案"c.h",在"a.h"中存在兩次對"c.

C++ algorithm 檔案 定義的 sort() 實現絕對值排序

Problem Description 輸入n(n<=100)個整數,按照絕對值從大到小排序後輸出。題目保證對於每一個測試例項,所有的數的絕對值都不相等。 Input 輸入資料有多組,每組佔一行,每行的第一個數字為n,接著是n個整數,n=0表示輸入資料的結束,不做處理。

C語言檔案stdlib.h裡面有什麼函式

主要含有的內容方向: A.字串轉換 B. 隨機數 C.記憶體管理 D.與環境的介面 E.查詢與排序 F.整數運算 G.多位元組字元 … 友情連結: (1)關於 stdio.h 和 stdlib.h 包含的函式 https://blogG…csdn.net/weixin_42513339/

關於 C/C++ 引入檔案的一點理解

今天 計算機圖形學 又講新知識了,又要引入新的標頭檔案。突發奇想,好像懂了引入標頭檔案的具體含義,之前一直沒有關注過這個知識點。 因為這節課要教 變換 ,所以要用到 glm 這個庫。進行相應下載後,配置完環境後,需要引入標頭檔案。 //glm #include

c語言檔案以及make注意事項

c語言標頭檔案以及make注意事項 標頭檔案說明:自己定義的標頭檔案和專案檔案放在一起,注意使用""而不是使用<>,系統的標頭檔案才使用<> 當main函式要呼叫其他函式的時候在編譯的時候需要將其他的c檔案也一起編譯 gcc main.c test.c   make

C++之檔案的變化

C中的標頭檔案 在C語言中,當用到標準輸入輸出時(實際上大多數情況都需要用到),需要包含標頭檔案<stdio.h>;當用到字元陣列相關操作時,需要包含標頭檔案<string.h>;當需要用到數學函式相關操作時,需要包含標頭檔案<math.h>等等。例如

simplelink_cc2640r2_sdk_1_40_00_45 之 C/C++ Compiler 檔案包含中的巨集值

simplelink_cc2640r2_sdk_1_40_00_45 ---------------------------------------------------------------- $SRC_BLE_DIR$=C:\Users\coolban_one\Desktop\C