標頭檔案重複包含
如果某個標頭檔案被多次包含,則在VC編譯器中編譯,會丟擲“重複定義”錯誤。
為了避免同一個檔案被重複包含多次,C++提出了2種解決方案。
1、#ifndef _SOME_FILE_H
#define _SOME_FILE_H
……
……
#endif //在檔案末端
2、#pragma one
……
……
#ifndef、#define、#endif是C++語言中的巨集定義,通過巨集定義來避免檔案多次編譯。即所有支援C++編譯器的都支援它。但是#pragma one是編譯相關的,不是每一個編譯系統都支援,移植性相對差一點。不過,現在基本上每個編譯器都有這個定義了。
相關推薦
C/C++避免標頭檔案重複包含的方法
C/C++避免標頭檔案重複包含的方法 1. #ifndef 2. #pragma once 3. 混合使用 在實際的程式設計過程中,因為會使用多個檔案,所以在檔案中不可避免的要引入一些標頭檔案,這樣就可能會出現一個頭檔案被 include
C/C++——標頭檔案重複包含問題
C++程式設計中,一般將類的宣告,類的定義分開,將類的宣告放在.h的標頭檔案中,而將類的定義放在.cpp的原始檔中,這樣我們的程式設計起來更加的模組化也清晰明瞭。但是,這樣的設計也會帶來一些問題,一個典型的問題就是重複定義問題。如果從一個類派生出一個類,派生類宣告時需要包含
標頭檔案重複包含和變數重複定義
在c或c++中,標頭檔案重複包含問題是程式設計師必須避免的問題,也是很多新手容易犯錯的問題。為什麼要避免標頭檔案重複包含呢? 1.我們知道在編譯c或c++程式時候,編譯器首先要對程式進行預處理,預處理其中一項工作便是將你源程式中#include的標頭檔案完整的展
防止變數重複定義、標頭檔案重複包含、巢狀包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #include "x.h"#include "
標頭檔案重複包含
如果某個標頭檔案被多次包含,則在VC編譯器中編譯,會丟擲“重複定義”錯誤。 為了避免同一個檔案被重複包含多次,C++提出了2種解決方案。 1、#ifndef _SOME_FILE_H #define _SOME_FILE_H …… ……
C++標頭檔案重複包含問題分析及解決方案
一、標頭檔案重複包含問題分析 1) 問題重現 舉例說明。假設在某個C++ 標頭檔案 或 原始檔 中,包含了A.h和B.h兩個標頭檔案: #include "A.h" #include "B.h" 事實上,在標頭檔案B.h中也包含了標頭檔案A的引用,即: #include"A
Keil標頭檔案重複定義的問題
提示 標頭檔案已經包含,並且錯誤指向了我的標頭檔案定義的地方,用sourceinsight搜多了一下,整個專案也只有在當前的》h檔案中有定義,最後從程式碼的main函式開始分析,並且檢視呼叫檔案, 如圖 在檔案的開頭已經包含了"app_console.h",一般習
C/C++由於標頭檔案重複引入引起的成員或類重複定義的解決辦法
報錯資訊: ../src/Circle.h:10:14: error: redefinition of 'PI' const double PI=3.14159;
解決C/C++ 標頭檔案相互包含 問題的方法
http://blog.sina.com.cn/s/blog_6ef9a3ad0101emuw.html http://blog.csdn.net/hazir/article/details/38600419 所謂超前引用是指一個型別在定義之前就被用來定義變數和宣告函式。
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.
標頭檔案的包含以及名稱空間的引入儘量寫在cpp檔案中
菜鳥程式設計需要知道的規範。 1,標頭檔案儘量包含在cpp檔案裡,而不是h檔案裡 放在.cpp檔案中是比較安全的,檔案在多次遞迴包含後很容易出現一些定義和宣告上的問題。放在cpp中可以減小標頭檔案依賴,可以提高編譯速度。所以,能放在cpp中的,就不要放在h中。只有標頭
解決標頭檔案相互包含問題的方法
一般情況下,C/C++要求所有的型別必須在使用前被定義,但是在一些特殊情況下,這種要求無法滿足,例如,在類CMyView中保留了一個非模式對話方塊物件指標,該物件用於顯示/修改一些資訊。為了實現對話方塊"應用"按鈕,把對話方塊做的修改立刻更新到view介面上,為此,需要在對話方塊類中需要儲存view類的指標,
C++兩個類標頭檔案互相包含
在構造自己的類時,有可能會碰到兩個類之間的相互引用問題,例如:定義了類A類B,A中使用了B定義的型別,B中也使用了A定義的型別class A{ int i; B b;}class B{ int i; A* a;}請注意上面的定義內容,一般情況下是不能出
C++標頭檔案的重定義問題以及標頭檔案互相包含問題
有的人將重複編譯,重複包含與重複定義弄混,比如:定義一個類,在例項化它之前並不產生記憶體開銷;這與基本型別有所區別。 明明在標頭檔案使用了#pragma once;#ifndef...#defi
MFC之標頭檔案相互包含問題及解決方法 error C4430: 缺少型別說明符
問題一: error C4430: 缺少型別說明符 - 假定為 int。注意: C++ 不支援預設 int 原因分析: 1. (此情況經常出現在大型工程專案中)如果存在兩個類的標頭檔案a.h和b.h,在a.h中有這樣的語句:#include "b.h",在b.h檔案中有這樣的
關於C/C++標頭檔案重複定義的思考
1.什麼叫重複定義 我們在寫大型專案的時候,檔案多,關係複雜。往往會引起標頭檔案重複定義的問題。 什麼叫標頭檔案重複定義呢? 舉個最簡單的例子: 有一個頭檔案"c.h",在"a.h"中存在兩次對"c.
c++中兩個類的標頭檔案互相包含編譯出錯的解決辦法
首先我們需要問一個問題是:為什麼兩個類不能互相包含標頭檔案? 所謂互相包含標頭檔案,我舉一個例子:我實現了兩個類:圖層類CLayer和符號類CSymbol,它們的大致關係是圖層裡包含有符號,符號裡定義一個相關圖層指標,具體請參考如下程式碼(注:以下程式碼僅供說明問題,不作為
string.h 標頭檔案中包含的一些庫函式
char *strcpy(char* dest, const char *src); 把從src地址開始且含有NULL結束符的字串複製到以dest開始的地址空間.src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。返回指向dest的指標
C語言:解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題
解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題,並給出全域性變數如何定義和宣告的方法. 解決方法: 1. 定義公共檔案: global.c 和global.h 其中, global.c檔案中: #include "global.h" //定義全域性變數 int g
初夏小談:C/C++防止標頭檔案被重複包含的兩種方法及區別
防止標頭檔案被重複包含的兩種方式: 1.條件編譯的巨集 2.#pragma once 先來說說第一種: #ifndef __HEADNAME__H__ #define __HEADNAME__H__ //... //標頭檔案 #endif C/C++標準支援