chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言中的頭文件能不能重復(fù)包含

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2024-11-26 17:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C語言中的頭文件能不能重復(fù)包含?

比如代碼寫成這樣,stdio.h 連續(xù)包含了兩次。

#include 
#include 

int main()
{
    printf("helloworld
");
    return 0;
}

我們先來編譯看下,好像沒有任何問題。

root@Turbo:~# gcc test.c -o test 
root@Turbo:~#

同一個頭文件,隨便包含多少次,都不會有問題,主要是這兩行代碼起了作用。

#ifndef _STDIO_H
#define _STDIO_H    1

寫頭文件的時候,習(xí)慣上都會加上兩個預(yù)處理指令,ifndef 和 define。

就以這個 test.h 為例:

#ifndefTEST_H
#define TEST_H

struct Test
{
    int a;
};

#endif

在 test.h 里面聲明了一個結(jié)構(gòu)體,然后在源文件中包含了兩次。

頭文件往往在編譯的第一步,預(yù)處理的時候展開。

第一次展開 test.h 的時候,會遇到預(yù)處理指令 ifndef:

#ifndef TEST_H

翻譯過來就是如果沒有定義這個宏。

很顯然,這個宏確實沒有定義過,于是判斷成立。

繼續(xù)往下走,遇到 define:

#define TEST_H

意思就是把這個宏定義一下。

然后就是把 test.h 里面的內(nèi)容搬到源文件中,這就是所謂的展開。

第二次包含 test.h 的時候,重復(fù)上面的操作。

先是遇到 ifndef,很顯然,這個宏剛才定義過,于是這條預(yù)處理指令不成立,下面的所有代碼都會跳過。

這樣就清楚了,雖然我們在源碼里面包含了 test.h,但是因為判斷不成立,并沒有真正的包含進(jìn)去。

相同的頭文件在一個源碼文件中可以重復(fù)包含,因為預(yù)處理指令的存在,所以并不會出問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7646

    瀏覽量

    146099
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4975

    瀏覽量

    74349

原文標(biāo)題:重復(fù)包含頭文件有什么影響

文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    能不能通過氣味來判斷三防漆是否環(huán)保?

    行業(yè)內(nèi)判斷三防漆的環(huán)保與否,有著明確的核心依據(jù),與氣味大小毫無關(guān)聯(lián)。能不能通過氣味來判斷三防漆是否環(huán)保?行業(yè)內(nèi)衡量三防漆環(huán)保性的關(guān)鍵標(biāo)準(zhǔn),是是否符合歐盟ROHS指令
    的頭像 發(fā)表于 03-17 17:13 ?348次閱讀
    <b class='flag-5'>能不能</b>通過氣味來判斷三防漆是否環(huán)保?

    智能顯示模塊通信時有CRC數(shù)據(jù)校驗功能嗎?串口通信能不能加上數(shù)據(jù)檢驗?

    智能顯示模塊通信時有CRC數(shù)據(jù)校驗功能嗎?串口通信能不能加上數(shù)據(jù)檢驗?
    發(fā)表于 02-28 16:13

    請問C語言中整形溢出的解決方法有哪些?

    C語言中整形溢出的解決方法有哪些?
    發(fā)表于 12-29 07:33

    單片機(jī)c語言中定義字節(jié)怎么定義?

    定義位可以用***it但是定義字節(jié)呢?還有就是比如匯編中的DPTR的DPH和DPL在c語言中怎樣定義的呢?
    發(fā)表于 12-29 06:32

    請問C語言中整形溢出會產(chǎn)生哪些異常行為?

    C語言中整形溢出會產(chǎn)生哪些異常行為?
    發(fā)表于 12-26 07:05

    請問C語言中整形溢出對哪些應(yīng)用場景影響較大?

    C語言中整形溢出對哪些應(yīng)用場景影響較大
    發(fā)表于 12-24 08:24

    C語言C++的區(qū)別及聯(lián)系

    創(chuàng)建源文件時什么都不給,默認(rèn)是.cpp。 3、返回值 C語言中,如果一個函數(shù)沒有指定返回值類型,默認(rèn)返回int類型;C++中,如果一個函數(shù)沒有返回值則必須指定為void。 4、參
    發(fā)表于 12-24 07:23

    Typedef在C語言中的應(yīng)用

    Typedef 在C語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預(yù)處理器做類似的事。例如,思考一下下面的例子: #define dPS struct s * typedef
    發(fā)表于 12-22 13:53

    C語言中可以嵌套匯編語言嗎?

    請問C語言中可以嵌套匯編語言嗎?
    發(fā)表于 12-15 08:14

    到底DDR走線能不能參考電源層???

    雖然我看到過DDR的走線參考電源平面也能調(diào)試成功的案例,但是依然不妨礙我還想問:到底DDR走線能不能參考電源層啊?
    的頭像 發(fā)表于 11-11 17:44 ?883次閱讀
    到底DDR走線<b class='flag-5'>能不能</b>參考電源層?。? />    </a>
</div>                              <div   id=

    使用MCU200T的板子能不能做RVSTAR上的實驗例子?

    手里只有一塊MCU200T的板子,看到老師做的RVSTAR上的例子,不知道能不能在MCU200T上面做
    發(fā)表于 11-05 12:55

    頭文件保護(hù)失效,提示變量重復(fù)包含,是什么原因?qū)е碌模?/a>

    我自定了一個頭文件,而且使用了頭文件保護(hù)機(jī)制。但是在兩個源文件包含相同的頭文件時,依然提示某些變量重復(fù)
    發(fā)表于 10-09 06:19

    工廠設(shè)備能不能工業(yè)數(shù)采?3招教你快速判斷,省時又省錢!

    設(shè)備能不能采?記住這五招:看接口、問協(xié)議、查燈亮、找廠家、加傳感器。大部分現(xiàn)代工廠設(shè)備(PLC/CNC/注塑機(jī)),甚至部分干燥機(jī)、模溫機(jī),都是能采的!別被“老設(shè)備”嚇住。
    的頭像 發(fā)表于 07-03 10:09 ?884次閱讀
    工廠設(shè)備<b class='flag-5'>能不能</b>工業(yè)數(shù)采?3招教你快速判斷,省時又省錢!

    cyw20829能不能使用紅外線解碼嗎?

    cyw20829能不能使用紅外線解碼嗎
    發(fā)表于 07-03 06:49

    深入理解C語言C語言循環(huán)控制

    C語言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無限循環(huán),C語言提供了多種循
    的頭像 發(fā)表于 04-29 18:49 ?2198次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環(huán)控制