日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言中的頭文件能不能重復包含

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

掃碼添加小助手

加入工程師交流群

C語言中的頭文件能不能重復包含?

比如代碼寫成這樣,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

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

就以這個 test.h 為例:

#ifndefTEST_H
#define TEST_H

struct Test
{
    int a;
};

#endif

在 test.h 里面聲明了一個結構體,然后在源文件中包含了兩次。

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

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

#ifndef TEST_H

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

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

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

#define TEST_H

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

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

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

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

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

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

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

    關注

    183

    文章

    7646

    瀏覽量

    146193
  • 代碼
    +關注

    關注

    30

    文章

    4977

    瀏覽量

    74414

原文標題:重復包含頭文件有什么影響

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

    行業(yè)內判斷三防漆的環(huán)保與否,有著明確的核心依據(jù),與氣味大小毫無關聯(lián)。能不能通過氣味來判斷三防漆是否環(huán)保?行業(yè)內衡量三防漆環(huán)保性的關鍵標準,是是否符合歐盟ROHS指令
    的頭像 發(fā)表于 03-17 17:13 ?374次閱讀
    <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

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

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

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

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

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

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

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

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

    Typedef在C語言中的應用

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

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

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

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

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

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

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

    頭文件保護失效,提示變量重復包含,是什么原因導致的?

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

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

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

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

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

    Windows環(huán)境下32位匯編語言中文資料

    電子發(fā)燒友網站提供《Windows環(huán)境下32位匯編語言中文資料.rar》資料免費下載
    發(fā)表于 06-30 15:14 ?0次下載
    潞城市| 滨海县| 嘉兴市| 奇台县| 通河县| 禹州市| 侯马市| 庆阳市| 德安县| 安吉县| 阿拉尔市| 新巴尔虎左旗| 皋兰县| 民丰县| 牙克石市| 兰考县| 昌都县| 高平市| 嘉善县| 凤冈县| 德钦县| 沧源| 苍南县| 霞浦县| 靖安县| 瑞昌市| 巢湖市| 尤溪县| 绥滨县| 遂川县| 巴彦县| 哈尔滨市| 开原市| 寻甸| 南澳县| 泸定县| 唐山市| 枣庄市| 吴堡县| 宁晋县| 清流县|