標頭檔案多次包含編譯出錯
在編譯一個工程時,有多個c檔案包含同一個.h檔案
比如a.c,b.c都包含c.h(#ifndef DH #idefine DH ... #endif)
當只有a.c包含c.h時,工程沒有問題
但是a.c和b.c同時包含c.h時,工程出現了很多問題。
首先排除重複編譯的問題。
分析查出來a.c中其實在包含c.h時有包含c.h的依賴標頭檔案。
在b.c中包含哪些依賴標頭檔案就可以了。
相關推薦
標頭檔案多次包含編譯出錯
在編譯一個工程時,有多個c檔案包含同一個.h檔案 比如a.c,b.c都包含c.h(#ifndef DH #idefine DH ... #endif) 當只有a.c包含c.h時,工程沒有問題 但是a.c和b.c同時包含c.h時,工程出現了很多問題。 首先排除重複編譯的問題
初夏小談:C/C++防止標頭檔案被重複包含的兩種方法及區別
防止標頭檔案被重複包含的兩種方式: 1.條件編譯的巨集 2.#pragma once 先來說說第一種: #ifndef __HEADNAME__H__ #define __HEADNAME__H__ //... //標頭檔案 #endif C/C++標準支援
include怎麼關聯標頭檔案?標頭檔案如何關聯原始檔?標頭檔案被重複包含的危害?怎麼防止重複包含?
標頭檔案(.h)的功能是一般用來進行宣告的(函式,類或變數引用,巨集定義)。 原始檔(.cpp)是用來進行定義的(函式,類定義,變數定義)。 #include 是在編譯器進行編譯之前,即在預編譯時把它後面所寫的那個標頭檔案的內容,完完整整地、 一字不改地包含到當前的原始檔中來。 &nbs
C語言中自帶的標頭檔案(.h)所包含的函式
由於之前沒有好好學習過C語言,所以對其自帶標頭檔案所包含的內容總是不清楚,每次寫程式碼都是盲目的#include很多.h,現在重新整理一下,發現了不少很好的函式,以方便複習查閱。 不完全統計,C語言標
標頭檔案被重複包含的危害及解決辦法
從概念上講,標頭檔案的功能是一般用來進行申明的(等函式原型或變數引用,巨集定義)。C檔案是用來進行定義的(函式定義、變數定義)。#include 是在編譯器進行編譯之前,即在預編譯時把它後面所寫的那個檔案的內容,完完整整地、 一字不改地包含到當前的檔案中來。實際上C檔案中是C語言的原始碼,H標頭檔案裡也是C語
防止了標頭檔案被重複包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inc
標頭檔案的重複包含和變數的重複定義
為什麼會出錯呢?按照條件編譯,a.h並沒有重複包含,可是還是提示變數A重複定義了。 在這裡我們要注意一點,變數,函式,類,結構體的重複定義不僅會發生在源程式編譯的時候,在目標程式連結的時候同樣也有可能發生。我們知道c/c++編譯的基本單元是.c或.cpp檔案,各個基本單元的編譯是相互獨立的,#ifndef等
解決vs2010標頭檔案stdatx.h預編譯問題
stdatx.h是一個C++的標頭檔案 //下面是百度百科的解釋,關羽stdatx.h檔案,他是MFC的標頭檔案 名稱的英文全稱為:Standard Application Framework Extensions 所謂標頭檔案預編譯,就是把一個工程(Project)中使用
可否把模板的標頭檔案和原始檔分開編譯
嚴格意義上說,不行,不過可以通過巧妙的手段解決這問題。//-------------test.h----------------// template<class T> class A { public: void f(); // 這裡只是個宣告
如何防止標頭檔案被重複包含或引用?
一、#pragma once ( 比較常用) 只要在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次,這條指令實際上在VC6中就已經有了,但是考慮到相容性並沒有太多的使用。 #pragmaonce是編譯相關,就是說這個編譯系統上能用,但在其他編譯系統不一定可以,也就
如何防止標頭檔案被重複包含、巢狀包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inclu
如何防止標頭檔案被重複包含
在windows平臺下,有一個很方便的巨集: #pragma once 指定當前檔案在構建時只被包含(或開啟)一次,這樣就可以減少構建的時間,因為加入#pragma once後,編譯器在開啟或讀取第一個#include 模組後,就不會再開啟或讀取隨後出現的相同#includ
C++/C中防止標頭檔案的重複包含的解決辦法及區別
為了避免同一個檔案被include多次,C/C++中有兩種方式,一種是#ifndef方式,一種是#pragma once方式。在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。 方式一: #ifndef __SOMEFILE_H_
函式放在標頭檔案中被多次包含的重定義問題
Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 轉載請標明來源 例如一個頭檔案headfile.h這樣寫 #pragma once bool Func (){return true;} 在這個標頭檔案被多個地方包含的時候就會出
標頭檔案被多次包含的解決辦法
檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼:#include"x.h" #include"x.h" 顯然,這裡檔案x.h被包含了兩次,沒有人會故意編寫這樣的程式碼。但是下面的程式碼:#include"a.h" #include"b.h
防止標頭檔案被多次包含
為了避免同一個檔案被include多次 1 #ifndef方式 2 #pragma once方式 在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。 方式一: #ifndef __SOMEFILE_H__ #def
c++中兩個類的標頭檔案互相包含編譯出錯的解決辦法
首先我們需要問一個問題是:為什麼兩個類不能互相包含標頭檔案? 所謂互相包含標頭檔案,我舉一個例子:我實現了兩個類:圖層類CLayer和符號類CSymbol,它們的大致關係是圖層裡包含有符號,符號裡定義一個相關圖層指標,具體請參考如下程式碼(注:以下程式碼僅供說明問題,不作為
C語言:解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題
解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題,並給出全域性變數如何定義和宣告的方法. 解決方法: 1. 定義公共檔案: global.c 和global.h 其中, global.c檔案中: #include "global.h" //定義全域性變數 int g
CCS編譯出錯:缺少標頭檔案的解決辦法
問題: "../Source/DSP2833x_SysCtrl.c", line 16: fatal error #5: could not open source file "DSP2833x_Device.h" ,在工程目錄下已經在include下包括所有標頭
opencv包含標頭檔案出錯的粗略解讀
Opencv新手遇到的問題很多問題之一就是 #include opencv標頭檔案的時候經常會出錯。程式明明就很簡單,一個稍懂opencv的人都知道程式沒有錯誤,但是一編譯就是一大堆錯誤,就是找不到標頭檔案。 fatal error C1083: 無法開啟包括檔案:“cv