怎樣在C 裡保證檔案只被包含一次

2022-06-03 08:15:11 字數 3371 閱讀 7829

1樓:

在被包含檔案裡寫,舉個例子吧,這樣寫:

#ifndef head_test_h

#define head_test_h

#endif

把要包含的標頭檔案內容放在上面的#define和#endif之間就可以了。這樣儘管一個標頭檔案被包含多次但是被前處理器處理後只剩下一次

2樓:匿名使用者

最簡單的做法,在 .h 頭部加上

#pragma once

從 visual studio 2003 開始就支援這個 directive. 如果是 visual studio 6.0 就用一樓的方法

#ifndef head_test_h

#define head_test_h

// 在這裡寫你的標頭檔案內容

#endif

3樓:匿名使用者

建議用條件編譯,通用性好。也就是將標頭檔案寫成這樣的:

#ifndef head_test_h/*這個巨集的名稱可以自定義,但是要兩行中的名稱保持相同*/

#define head_test_h

/*標頭檔案的內容寫在這裡*/

#endif

4樓:昏昏燈火語生平

在包含的檔案裡寫,mfc的一些標頭檔案貌似就是做這些的,你去看看。

c++ 如何讀取多個檔案後儲存到一個檔案中

5樓:金色潛鳥

檔名有規律,可用程式生成輸入檔名。

例如:for (i=1;i<=n;i++) sprintf(namein,"aa%d.txt",i);

生成輸入檔名 aa1.txt, aa2.txt, aa3.txt ...

不要求選擇資料,那麼可以用迴圈語句按行讀入,按行寫出。

程式如下:

#include

#include

using namespace std;

#include

main();

fclose(fin);};}

fclose(fout);

return 0;

}*****=

更簡單的是用system(), 調 dos copy 命令來做。

6樓:千鋒教育

這裡假設string型別可能包含任意字元。否則,只需用不可能出現的字元分隔開即可。

因此,唯一的辦法是將string的長度也寫入到檔案當中。下面是示例:

#include

#include

#include

#include

#include

inline void writestring(std::ostream& ostr, std::string const& str)

inline std::string readstring(std::istream& istr)

int main()

return 0;}

c++ 寫一個互動選擇題程式 包含四個函式的 第一步存到一個檔案裡面 第

c++中 如何對多個檔案同時進行操作

7樓:匿名使用者

檔名可以用string的

比如你可以定義string name ="1"

然後向name += ".txt",再向 output<

向2.txt輸出只需要將串name改為2.txt即可。

8樓:太白

ofstream fout;

char filemane[8];

for( int i(0); i<30 ; ++i )注意標頭檔案包含。

c++如何寫類,分幾個檔案寫?

9樓:小小樂師

一般一個類只有2個檔案就可以了吧,一個標頭檔案.h,用來做類和其函式宣告,同名.cpp檔案是其實現方法,你說的第三個,難道你們老師的意思是主函式所在檔案?

標頭檔案(.h)裡不包含main()宣告

在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樓:匿名使用者

互相包含絕對是不行,這會導致包含產生一個類似遞迴的死迴圈,既然互相包含不行那麼肯定有一方是不可能知道對方的實現細節的,也就不可能通過物件.成員的方式來呼叫.但是你可以嘗試使用**函式和管理類(已被否決)的方式來解決該問題.

12樓:

在標頭檔案用下面的巨集把**包起來, 這樣可以防止重複。 你說的相互包含,沒有問題的啊。

#ifndef _filename_h

#define _filename_h

#endif

在c中讀寫檔案是怎樣查詢特定名稱的檔案

string str d string filedir directory.getfiles str,csv searchoption.alldirectories 查詢d盤下所有 包括子目錄 的csv檔案string filedir directory.getfiles str,abcd sear...

怎樣在檔案中用圖形圈點,怎樣在Word檔案中用圖形圈點

先將剪貼畫的的位置設定為 置於底層 然後再在上面畫橢圓等標註圖形,然後將圖形的填充色設定為無,線條顏色為紅色。箭頭的畫法相似 可以使用 箭頭工具和文字框工具。怎麼在word 文件裡插入一個方框或一個圓圈 然後再框框或圈圈裡寫字 工具欄 繪圖 那個斜a字 在其工具操作欄 會轉在下面狀態列上方 點 方框...

在c 中stdio h檔案哪個檔案的預處理檔案 如題謝謝了

stdio.h就是指 standard input output 意思就是說標準輸入輸出標頭檔案!所以了,用到標準輸入輸出函式時,就要呼叫這個標頭檔案!呼叫 include或 include stdio.h 需要預處理的語句 int getch 從標準輸入裝置讀入一個字元,不顯示 int putch...