1樓:匿名使用者
不會重複包含,你一開始用的巨集。
#ifndef cuser_h
#define cuser_h
就是防止重複包含的。
另外,你可以不包含,然後在user前面做一個前置宣告:class string;
然後把類成員 str宣告為指標,在cpp檔案裡面在引入標頭檔案。
後面一種是比較好的做法。
標頭檔案重複編譯
2樓:匿名使用者
只要簡單的理解為用標頭檔案裡面的內容替換#include的地方,就可以了。
之所以會重複編譯,是因為你的標頭檔案有可能相互直接include或者間接include,直接點比如你中直接使用兩次#include ""又中有定義函式scanf();
編譯時,編譯器會找到兩個scanf()函式體,編譯失敗。
而加上#ifndef _dedd
#define _dedd
#include""
#endif
(在任何引用標頭檔案的時候都這樣寫),那麼,在第一次編譯器把包含過來後,後面#include ""的地方都會檢測到 _dedd已經 define了,所以不會再包含該標頭檔案。
3樓:張申誠
他的意思是如果_dedd=1就不執行#include「
c++ 標頭檔案中函式重複定義問題
4樓:_鈊_煩_薏亂
當然,你應該將定義都放到。cpp中。.h中只放宣告就沒事了。
如果是全域性變數,就在。h中用extern宣告,然後在。cpp中定義就是了。
5樓:匿名使用者
一個函式可以申明多次, 可是隻能定義一次,這是規定!
6樓:匿名使用者
一個函式可以申明多次, 可是隻能定義一次,這是規定。
應該將定義都放到。cpp中。.h中只放宣告就沒事了。
如果是全域性變數,就在。h中用extern宣告,然後在。cpp中定義就是了。
c++這個詞在中國大陸的程式設計師圈子中通常被讀做「c加加」,而西方的程式設計師通常讀做「c plus plus」,「cpp」。 它是一種使用非常廣泛的計算機程式語言。c++是一種靜態資料型別檢查的、支援多重程式設計正規化的通用程式設計語言。
它支援過程化程式設計、資料抽象、物件導向程式設計、泛型程式設計等多種程式設計風格。最新正式標準c++於2023年8月18日公佈。其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程式設計師受用的最強大程式語言之一,支援類:
類、封裝、過載等特性。
c++標頭檔案編譯重編譯
7樓:哈倫德拉
#if !defined b_h
#define b_h
把的內容全容包括在這裡面。
#endif
c++多檔案編譯,如果兩個標頭檔案都需要包含另一個標頭檔案,而這兩個標頭檔案又要被第四個檔案包含,怎麼辦
8樓:哦米噶滴
假如你現在有 三個標頭檔案,a b c三個程式都要呼叫。
這時候你可以這樣,比如a b c三個程式都要用到#include 那麼他們的標頭檔案裡你可以這樣寫。
#ifndef string_abc_h
#define string_abc_h
#include
#endif
這樣當編譯器第一次編譯string的時候就已經定義巨集了。。下次遇到同樣的巨集就會跳過。
9樓:匿名使用者
#ifndef #define ..#endif
應該可以的啊,你標頭檔案要用大寫的。用a_h別用。
在c/c++中如何避免標頭檔案被多次包含?
10樓:米莫的菜
標頭檔案的最開始。
加入這條雜注,就能夠保證標頭檔案只被編譯一次。
#pragma once是編譯器相關的,就是說即使這個編譯系統上有效,但在其他編譯系統也不一定可以,不過現在基本上已經是每個編譯器都有這個雜注了。
#ifndef,#define,#endif是c/c++語言中的巨集定義,通過巨集定義避免檔案多次編譯。所以在所有支援c++語言的編譯器上都是有效的,如果寫的程式要跨平臺,最好使用這種方式具體寫法方式一:#ifndef __somefile_h__
#define __somefile_h__
...一些宣告語句#endif方式二:#pragma once
...一些宣告語句比較#ifndef的方式依賴於巨集名字不能衝突,這不光可以保證同一個檔案不會被包含多次,也能保證內容完全相同的兩個檔案不會被不小心同時包含。
當然,缺點就是如果不同標頭檔案的巨集名不小心「撞車」,可能就會導致標頭檔案明明存在,編譯器卻硬說找不到宣告的狀況。
#pragma once則由編譯器提供保證:同一個檔案不會被包含多次。
注意這裡所說的「同一個檔案」是指物理上的一個檔案,而不是指內容相同的兩個檔案。
。帶來的好處是,你不必再費勁想個巨集名了,當然也就不會出現巨集名碰撞引發的奇怪問題。對應的缺點就是如果某個標頭檔案有多份拷貝,本方法不能保證他們不被重複包含。
當然,相比巨集名碰撞引發的「找不到宣告」的問題,重複包含更容易被發現並修正。
方式一由語言支援所以移植性好,方式二 可以避免名字衝突。
我還看到一種用法是把兩者放在一起的:
#pragma once
#ifndef __somefile_h__
...一些宣告語句#endif看起來似乎是想兼有兩者的優點。
c語言,標頭檔案總是無法在編譯**錯
11樓:匿名使用者
可能是你編譯器設定的問題,看看設定的預設目錄是否正確。另外當前目錄包含標頭檔案用雙引號不用尖括號即:
#include ""
12樓:洪蠍
include這個單詞是正確的。
如何處理c++標頭檔案重複定義問題
13樓:奔跑de小白鹿
在標頭檔案中只申明,不要定義 像這些 char raw[30][50]; int line=0; 統統這樣定義 extern char raw[30][50]; extern int line; 然後在某個檔案中去定義 在標頭檔案中只申明,不要定義 像這些 char raw[30][50]; int line=0;
c防止標頭檔案重複include問題
踏岸尋柳 都是為了避免同一個檔案被include多次 1 ifndef方式 2 pragma once方式 在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。方式一 ifndef somefile h define somefile h 一些宣告語句 endif...
c語言寫標頭檔案定義巨集的問題,C語言寫標頭檔案定義巨集的問題
兔子和小強 ifndef a h define a h endif 就是如果沒有定義a h那麼就定義a h,並執行.這樣就避免了重複include的問題。標頭檔案叫file 那麼一般 ifndef file h 這是c的風格,也可以取一個唯一的其他識別符號 預編譯 內的防止重複編譯就是這樣做的,比如...
c語言中的標頭檔案是什麼概念,c語言標頭檔案的是幹什麼用的?
標頭檔案是你程式中需要用到東西,如需要某個數學函式,則必須包括數學相關標頭檔案,如math.h,當然,也可以自己寫函式,只要你不怕麻煩!標頭檔案是你程式中需要用到東西,如需要某個數學函式,則必須包括數學相關標頭檔案,如math.h,當然,也可以自己寫函式,只要你不怕麻煩!標頭檔案就是在你所編制的程式...