• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    C51中頭文件的寫(xiě)法

    作者: 時(shí)間:2012-08-16 來(lái)源:網(wǎng)絡(luò) 收藏

    一、位置

    #include xxx.h> 優(yōu)先在系統(tǒng)查找

    #include“xxx.h”有現(xiàn)在項(xiàng)目路徑查找

    二、#ifndef和#endif

    通常形式為

    #ifndef _xxxx_h_

    #define _xxxx_h_

    .........(頭文件具體內(nèi)容)

    #endif

    這樣的寫(xiě)法表示,如果_xxxx_h_還沒(méi)有被定義,那么頭文件內(nèi)容將被執(zhí)行,如果已經(jīng)定義過(guò)了,那么頭文件內(nèi)容就不執(zhí)行了。作用在于,如果某頭文件被不同c文件同時(shí)調(diào)用,那么里面的內(nèi)容不至于因?yàn)橹貜?fù)定義而出錯(cuò),因?yàn)椴还苷{(diào)用幾次頭文件,其內(nèi)容只有在第一次出現(xiàn)時(shí)被執(zhí)行,同時(shí)定義一個(gè)_xxxx_h_,以后再次調(diào)用時(shí),頭文件內(nèi)容被忽略。

    三、函數(shù)和宏

    假設(shè)有如下文件 main.c aaa.c aaa.h

    其中,,aaa.c里面有一個(gè)宏X,一個(gè)函數(shù)Y,且函數(shù)Y中使用了X

    aaa.h里面申明了函數(shù)Y

    main.c里包含了aaa.h文件,調(diào)用了函數(shù)Y,但沒(méi)有定義宏X

    那么,編譯時(shí)不會(huì)出錯(cuò),這表示,函數(shù)Y中出現(xiàn)宏X時(shí),它會(huì)在自身所在的c文件,即aaa.c里面查找宏

    變化1:如上情況不變,但是在main.c里面將整個(gè)函數(shù)Y重新寫(xiě)一遍

    編譯出錯(cuò),提示 “error C202: 'X': undefined identifier”

    說(shuō)明此時(shí)函數(shù)Y在main.c文件中找不到宏X,因此提示為未定義的符號(hào)

    變化2:將aaa.c中的宏剪切到main.c,其余情況不變

    編譯出錯(cuò),同樣提示“error C202: 'X': undefined identifier”

    結(jié)論: 函數(shù)中如果出現(xiàn)宏,那么該函數(shù)能且只能在其自身所在的c文件中查找該宏,如果二者不在同個(gè)c文件,必然出錯(cuò)



    關(guān)鍵詞: C51 頭文件 默認(rèn)路徑

    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 新安县| 文水县| 额敏县| 资溪县| 高邮市| 黑龙江省| 聊城市| 白朗县| 通州区| 安远县| 万荣县| 云林县| 西宁市| 湄潭县| 滁州市| 青河县| 枣庄市| 湟源县| 宣城市| 南江县| 航空| 东乌珠穆沁旗| 射洪县| 昌江| 宾阳县| 定边县| 集安市| 新密市| 舒城县| 万荣县| 龙口市| 镶黄旗| 肥东县| 新河县| 两当县| 盐城市| 阿拉尔市| 金沙县| 噶尔县| 桃园市| 武邑县|