怎樣防止標頭檔案被重複引用
方式一:條件編譯:
#ifndef
#define
......//一些宣告語句
#endif
這種方式依賴於巨集名稱不能衝突,而且這種方式可以保證同一個檔案不被包含多次,也能保證內容完全相同的兩個檔案不會不小心同時包含。但是,如果巨集名稱相同,就會明明你包含了標頭檔案,卻找不到原始檔。條件編譯的有點事,跨平臺效果好。
例:
//file1h
#define __BOOK_H_
現在有另外一個file2.book.h
#ifnedf _BOOK_H__
#define _BOOK_H__
//program
#endif // _BOOK_H__
在你的主函式裡包含了該檔案:
#include "file1.h”
#include"book.h"
預編譯階段,把file1裡的巨集展開,就得到了一個BOOK_H_的巨集,這個時候就不會在包含book.h這個標頭檔案了
方式二:#pragma once
這種方式又叫c和c++雜注,優點是,簡單,沒有巨集定義衝突的情況,但是不跨平臺,而且如果兩個內容完全相同的檔案被包含,不會報錯。
相關推薦
怎樣防止標頭檔案被重複引用
方式一:條件編譯: #ifndef #define ......//一些宣告語句 #endif 這種方式依賴於巨集名稱不能衝突,而且這種方式可以保證同一個檔案不被包含多次,也能保證內容完全相同的兩個檔案不會不小心同時包含。但是,如果巨集名稱相同,
如何防止標頭檔案被重複包含或引用?
一、#pragma once ( 比較常用) 只要在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次,這條指令實際上在VC6中就已經有了,但是考慮到相容性並沒有太多的使用。 #pragmaonce是編譯相關,就是說這個編譯系統上能用,但在其他編譯系統不一定可以,也就
初夏小談:C/C++防止標頭檔案被重複包含的兩種方法及區別
防止標頭檔案被重複包含的兩種方式: 1.條件編譯的巨集 2.#pragma once 先來說說第一種: #ifndef __HEADNAME__H__ #define __HEADNAME__H__ //... //標頭檔案 #endif C/C++標準支援
如何防止標頭檔案被重複包含、巢狀包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inclu
如何防止標頭檔案被重複包含
在windows平臺下,有一個很方便的巨集: #pragma once 指定當前檔案在構建時只被包含(或開啟)一次,這樣就可以減少構建的時間,因為加入#pragma once後,編譯器在開啟或讀取第一個#include 模組後,就不會再開啟或讀取隨後出現的相同#includ
include怎麼關聯標頭檔案?標頭檔案如何關聯原始檔?標頭檔案被重複包含的危害?怎麼防止重複包含?
標頭檔案(.h)的功能是一般用來進行宣告的(函式,類或變數引用,巨集定義)。 原始檔(.cpp)是用來進行定義的(函式,類定義,變數定義)。 #include 是在編譯器進行編譯之前,即在預編譯時把它後面所寫的那個標頭檔案的內容,完完整整地、 一字不改地包含到當前的原始檔中來。 &nbs
防止了標頭檔案被重複包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inc
標頭檔案被重複包含的危害及解決辦法
從概念上講,標頭檔案的功能是一般用來進行申明的(等函式原型或變數引用,巨集定義)。C檔案是用來進行定義的(函式定義、變數定義)。#include 是在編譯器進行編譯之前,即在預編譯時把它後面所寫的那個檔案的內容,完完整整地、 一字不改地包含到當前的檔案中來。實際上C檔案中是C語言的原始碼,H標頭檔案裡也是C語
C++/C中防止標頭檔案的重複包含的解決辦法及區別
為了避免同一個檔案被include多次,C/C++中有兩種方式,一種是#ifndef方式,一種是#pragma once方式。在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。 方式一: #ifndef __SOMEFILE_H_
防止標頭檔案被多次包含
為了避免同一個檔案被include多次 1 #ifndef方式 2 #pragma once方式 在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。 方式一: #ifndef __SOMEFILE_H__ #def
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語言專案]防止標頭檔案和全域性變數重複定義
昨天下午將全域性變數定義在H檔案中導致連結時提示變數在多個obj檔案內重複。 解決辦法如下: 將變數移入C檔案中進行定義,然後在H檔案中加入extern在變數之前。 這樣當其它C檔案引用該全域性變數時就會去連結這個變數符號而不是重新生成。 另附防止H檔案被重複包含的處理方
標頭檔案的重複包含和變數的重複定義
為什麼會出錯呢?按照條件編譯,a.h並沒有重複包含,可是還是提示變數A重複定義了。 在這裡我們要注意一點,變數,函式,類,結構體的重複定義不僅會發生在源程式編譯的時候,在目標程式連結的時候同樣也有可能發生。我們知道c/c++編譯的基本單元是.c或.cpp檔案,各個基本單元的編譯是相互獨立的,#ifndef等
標頭檔案被多次呼叫時的解決辦法
微控制器程式設計中有時會出現標頭檔案多次呼叫,編譯時導致結構體函式被重複定義的錯誤以STM3210X為例當頭檔案stm32f10x.h被多次呼叫時,會出現函式體被多次定義的錯誤,此時在標頭檔案中新增#ifndef __STM32F10X_H#define __STM32F10
標頭檔案被多次包含的解決辦法
檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼:#include"x.h" #include"x.h" 顯然,這裡檔案x.h被包含了兩次,沒有人會故意編寫這樣的程式碼。但是下面的程式碼:#include"a.h" #include"b.h
防止變數重複定義、標頭檔案重複包含、巢狀包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #include "x.h"#include "
C語言:解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題
解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題,並給出全域性變數如何定義和宣告的方法. 解決方法: 1. 定義公共檔案: global.c 和global.h 其中, global.c檔案中: #include "global.h" //定義全域性變數 int g
標頭檔案的編寫和引用
我用的是 Dev-c++ 編寫標頭檔案 首先寫標頭檔案裡面的函式, 然後儲存,記得字尾寫 .h 就行 例:(順序表的標
C/C++避免標頭檔案重複包含的方法
C/C++避免標頭檔案重複包含的方法 1. #ifndef 2. #pragma once 3. 混合使用 在實際的程式設計過程中,因為會使用多個檔案,所以在檔案中不可避免的要引入一些標頭檔案,這樣就可能會出現一個頭檔案被 include
C語言引用不同路徑下的標頭檔案的方法
C語言學習筆記,備查: 希望在一個A.c檔案中引用另一個B.c檔案的方法,可以將B.c檔案中的方法提取至B.h標頭檔案,然後在B.c和A.c中分別用#include "XXX/B.h"引用。其中XXX/B.h可以是絕對路徑也可以是相對路徑。 舉例: FindPrime.c檔案中,有個is