ifndef與define與endif作用和用法.doc

ifndef與define與endif作用和用法.doc

ID:62033464

大?。?6.00 KB

頁數(shù):7頁

時間:2021-04-15

ifndef與define與endif作用和用法.doc_第1頁
ifndef與define與endif作用和用法.doc_第2頁
ifndef與define與endif作用和用法.doc_第3頁
ifndef與define與endif作用和用法.doc_第4頁
ifndef與define與endif作用和用法.doc_第5頁
資源描述:

《ifndef與define與endif作用和用法.doc》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。

1、ifndef/define/endif作用和用法1.問題:ifndef/define/endif”主要目的是防止頭文件的重復包含和編譯,偶只知道這個概念不懂的是怎么個用法,和為什么要用它~~高手請指點一下~~謝謝~~~!?。?----——-—-——-——--—---—-——-—-————-------————--————-—--—-——--—-----—--—--—-—-—-----—-————-———------—用法:.h文件,如下:#ifndef?。豖_H#defineXX_H...#en

2、dif這樣如果有兩個地方都包含這個頭文件,就不會出現(xiàn)兩次包含的情況。。因為在第二次包含時XX_H 已經(jīng)有定義了,所以就不再include了-------———-—---————-—--—--——--———-------—-——--——-—--——-—----—-—-—-—---——-——-—-----——-—-—-—--———-——#ifndefGRAPHICS_H //防止graphics.h被重復引用#defineGRAPHICS_H#include //引用標準庫的頭文件…

3、#include“myheader.h”?。?引用非標準庫的頭文件…voidFunction1(…);//全局函數(shù)聲明…classBox// 類結構聲明{…};#endif--—-—-—--------—---————-—-——---—-----——-———--—--———-—-—-——-———---------—--———-—----—-—-—--—-------那是指你建立多個文件時,多個文件里都包含這個頭文件---—--—--—-—----———--------—--—----——-—--

4、—-———----——--——--—--—--—----—--—-—--—-—---—----—------———給你舉個例子,再順便分析一下:假設你的工程里面有4個文件,分別是a.cpp,b。h,c.h,d。h。a.cpp的頭部是:#include"b.h”#include”c。h ”b.h和c。h的頭部都是:#include?。ⅲ洌甴"而d.h里面有classD的定義。這樣一來,編譯器編譯a.cpp的時候,先根據(jù)#include"b。h"去編譯b。h這個問題,再根據(jù)b.h里面的#includ

5、e”d。h?。?去編譯d.h的這個文件,這樣就把d.h里面的classD編譯了;然后再根據(jù)a.cpp的第二句#include”c。h”,去編譯c.h,最終還是會找到的d。h里面的classD,但是class D之前已經(jīng)編譯過了,所以就會報重定義錯誤。加上ifndef/define/endif,就可以防止這種重定義錯誤。----—-------—--—----—----——--—-———---—---——-—---—---------———------—-—-——-—--——--—-————-—-

6、-—------A。h 里#ifndef A_H#defineA_H。。.#endifB.h和C.h都include"A.h”D。h里include"B.h”include”C。h"在預編譯的過程中,執(zhí)行到include "C。h?。r會因為在上一句的時候已經(jīng)定義了A_H這個宏,所以此時的的的ifndef條件不滿足,也就不會再一次包含A.h,起到了防止重復引用頭文件的效果。-————-—-—--—------———---------—-—--—--—----------—--——----—---

7、----—-—-------——-----——--——---————--1.比如你有兩個C文件,這兩個C文件都include了同一個頭文件。而編譯時,這兩個C文件要一同編譯成一個可運行文件,于是問題來了,大量的聲明沖突?!∵€是把頭文件的內容都放在#ifndef和#endif中吧。不管你的頭文件會不會被多個文件引用,你都要加上這個.一般格式是這樣的:#ifndef<標識〉#define〈標識>。。。。..。。....#endif〈標識>在理論上來說可以是自由命名的,但每個頭文件的這個“標識”都應該

8、是唯一的.標識的命名規(guī)則一般是頭文件名全大寫,前后加下劃線,并把文件名中的“.”也變成下劃線,如:stdio.h#ifndef_STDIO_H_#define_STDIO_H_。。....#endif2.在#ifndef中定義變量出現(xiàn)的問題(一般不定義在#ifndef中)。#ifndefAAA#defineAAA...inti;。..#endif里面有一個變量定義在vc中鏈接時就出現(xiàn)了i重復定義的錯誤,而在c中成功編譯.原因:(1).當你第一個使用這個頭的。cpp文件生成。obj的時候,inti

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。