在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

C語(yǔ)言中程序員編寫(xiě)的頭文件和編譯器自帶的頭文件

電子工程師 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-11-12 14:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

頭文件是擴(kuò)展名為.h的文件,包含了 C 函數(shù)聲明和宏定義,被多個(gè)源文件中引用共享。有兩種類(lèi)型的頭文件:程序員編寫(xiě)的頭文件和編譯器自帶的頭文件。

在程序中要使用頭文件,需要使用 C 預(yù)處理指令#include來(lái)引用它。前面我們已經(jīng)看過(guò)stdio.h頭文件,它是編譯器自帶的頭文件。

引用頭文件相當(dāng)于復(fù)制頭文件的內(nèi)容,但是我們不會(huì)直接在源文件中復(fù)制頭文件的內(nèi)容,因?yàn)檫@么做很容易出錯(cuò),特別在程序是由多個(gè)源文件組成的時(shí)候。

A simple practice in C 或 C++ 程序中,建議把所有的常量、宏、系統(tǒng)全局變量和函數(shù)原型寫(xiě)在頭文件中,在需要的時(shí)候隨時(shí)引用這些頭文件。

引用頭文件的語(yǔ)法

使用預(yù)處理指令#include可以引用用戶和系統(tǒng)頭文件。它的形式有以下兩種:

#include

這種形式用于引用系統(tǒng)頭文件。它在系統(tǒng)目錄的標(biāo)準(zhǔn)列表中搜索名為 file 的文件。在編譯源代碼時(shí),您可以通過(guò) -I 選項(xiàng)把目錄前置在該列表前。

#include"file"

這種形式用于引用用戶頭文件。它在包含當(dāng)前文件的目錄中搜索名為 file 的文件。在編譯源代碼時(shí),您可以通過(guò) -I 選項(xiàng)把目錄前置在該列表前。

引用頭文件的操作

#include指令會(huì)指示 C 預(yù)處理器瀏覽指定的文件作為輸入。預(yù)處理器的輸出包含了已經(jīng)生成的輸出,被引用文件生成的輸出以及#include指令之后的文本輸出。例如,如果您有一個(gè)頭文件 header.h,如下:

char*test (void);

和一個(gè)使用了頭文件的主程序program.c,如下:

int x;#include"header.h"int main (void){ puts (test ());}

編譯器會(huì)看到如下的代碼信息:

int x;char*test (void);int main (void){ puts (test ());}

只引用一次頭文件

如果一個(gè)頭文件被引用兩次,編譯器會(huì)處理兩次頭文件的內(nèi)容,這將產(chǎn)生錯(cuò)誤。為了防止這種情況,標(biāo)準(zhǔn)的做法是把文件的整個(gè)內(nèi)容放在條件編譯語(yǔ)句中,如下:

#ifndef HEADER_FILE#define HEADER_FILE the entire header file file#endif

這種結(jié)構(gòu)就是通常所說(shuō)的包裝器#ifndef。當(dāng)再次引用頭文件時(shí),條件為假,因?yàn)?HEADER_FILE 已定義。此時(shí),預(yù)處理器會(huì)跳過(guò)文件的整個(gè)內(nèi)容,編譯器會(huì)忽略它。

有條件引用

有時(shí)需要從多個(gè)不同的頭文件中選擇一個(gè)引用到程序中。例如,需要指定在不同的操作系統(tǒng)上使用的配置參數(shù)。您可以通過(guò)一系列條件來(lái)實(shí)現(xiàn)這點(diǎn),如下:

#if SYSTEM_1 # include "system_1.h"#elif SYSTEM_2 # include "system_2.h"#elif SYSTEM_3 ...#endif

但是如果頭文件比較多的時(shí)候,這么做是很不妥當(dāng)?shù)模A(yù)處理器使用宏來(lái)定義頭文件的名稱。這就是所謂的有條件引用。它不是用頭文件的名稱作為#include的直接參數(shù),您只需要使用宏名稱代替即可:

#define SYSTEM_H "system_1.h"...#include SYSTEM_H

SYSTEM_H 會(huì)擴(kuò)展,預(yù)處理器會(huì)查找 system_1.h,就像#include最初編寫(xiě)的那樣。SYSTEM_H 可通過(guò) -D 選項(xiàng)被您的 Makefile 定義。

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

    關(guān)注

    68

    文章

    19854

    瀏覽量

    234260
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7631

    瀏覽量

    141027
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1659

    瀏覽量

    50068

原文標(biāo)題:C語(yǔ)言中的頭文件

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【Makefile】C文件包含的頭文件修改,但不重新編譯

    【Linux + Makefile】Makefile的高階用法:解決C文件包含的頭文件修改了,但C文件不重新
    的頭像 發(fā)表于 09-08 08:53 ?6099次閱讀
    【Makefile】<b class='flag-5'>C</b><b class='flag-5'>文件</b>包含的<b class='flag-5'>頭文件</b>修改,但不重新<b class='flag-5'>編譯</b>?

    C語(yǔ)言必備知識(shí)頭文件包含

    頭文件C語(yǔ)言中是非常重要的組成部分。
    的頭像 發(fā)表于 12-01 18:20 ?2494次閱讀

    如何編寫(xiě)自己的C語(yǔ)言頭文件

    編譯器頭文件所在目錄。而使用尖括號(hào)(<>)時(shí),剛好是相反的搜索順序。假設(shè)我們有兩個(gè)文件名一樣的頭文件hardware.h,但內(nèi)容卻是不一樣的。一個(gè)保存在
    發(fā)表于 03-11 22:19

    C 18編譯器頭文件問(wèn)題

    當(dāng)我試圖在C 18編譯器中包含頭文件時(shí)。它在頭文件末尾引發(fā)語(yǔ)法錯(cuò)誤。
    發(fā)表于 04-10 09:19

    STC單片機(jī)在KEIL編譯器中的頭文件

    STC單片機(jī)在keil編譯器里找不到頭文件如何處理。首先在網(wǎng)絡(luò)上找到一個(gè)關(guān)于STC單片機(jī)的升級(jí)包。安裝上去以后,就可以看到有STC型號(hào)的單片機(jī)可以選擇了。但是此時(shí),它的頭文件卻無(wú)法
    發(fā)表于 08-26 10:52 ?8437次閱讀

    怎么在keil里建立頭文件

    keil中進(jìn)行51單片機(jī)編寫(xiě)程序時(shí),進(jìn)行多文件編譯處理,相關(guān)頭文件的知識(shí)
    發(fā)表于 12-10 15:57 ?5次下載

    如何在C++代碼中使用C頭文件

    。 12.3.1 在C++中使用系統(tǒng)C頭文件 要包括標(biāo)準(zhǔn)的系統(tǒng) C 頭文件,如 stdio.h,不必進(jìn)行任何特殊操作。只有使用extern
    發(fā)表于 10-19 09:24 ?3次下載

    C語(yǔ)言頭文件是做什么的

    c語(yǔ)言程序代碼文件擴(kuò)展名只能是.c或者.h,換句話說(shuō),c語(yǔ)言
    的頭像 發(fā)表于 02-13 15:29 ?9744次閱讀

    C語(yǔ)言頭文件組織作用與包含原則詳解

    說(shuō)明 本文假定讀者已具備基本的C編譯知識(shí)。 如非特殊說(shuō)明,文中源文件指 * .c文件頭文件
    的頭像 發(fā)表于 11-12 17:49 ?3186次閱讀

    C語(yǔ)言頭文件組織與包含原則

    說(shuō)明本文假定讀者已具備基本的C編譯知識(shí)。 如非特殊說(shuō)明,文中“源文件”指 * .c文件,“頭文件
    的頭像 發(fā)表于 11-14 11:31 ?3788次閱讀

    編程中引用頭文件的幾種方法及要點(diǎn)

    《》 #include使用引號(hào)“” 還是 尖括號(hào)《》 這個(gè)是有規(guī)定的。 通常來(lái)說(shuō):系統(tǒng)自帶頭文件用尖括號(hào)括起來(lái),這樣編譯器會(huì)在系統(tǒng)文件目錄下查找。 #include 《xxx.h》
    的頭像 發(fā)表于 03-12 17:30 ?3725次閱讀

    MCU_頭文件編寫(xiě)

    頭文件中一般放一些重復(fù)使用的代碼,如:常量、變量、宏等的定義,函數(shù)的聲明。當(dāng)使用#include語(yǔ)句引用頭頭文件時(shí),相當(dāng)于將頭文件中的內(nèi)容復(fù)制到#include處。頭文件一般形式:#i
    發(fā)表于 12-05 10:36 ?5次下載
    MCU_<b class='flag-5'>頭文件</b><b class='flag-5'>編寫(xiě)</b>

    C語(yǔ)言頭文件路徑的剖析

    編譯器編譯過(guò)程中會(huì)按照這些路徑信息到指定的位置去查找頭文件,然后通過(guò)預(yù)處理作展開(kāi)處理。在查找頭文件的過(guò)程中,
    的頭像 發(fā)表于 02-17 09:44 ?2264次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b><b class='flag-5'>頭文件</b>路徑的剖析

    C 語(yǔ)言頭文件路徑位置問(wèn)題

    前言 前段時(shí)間在寫(xiě) Linux 專(zhuān)欄的過(guò)程中,忽然想到一個(gè)問(wèn)題 :C語(yǔ)言頭文件路徑,因?yàn)樵贕CC環(huán)境下面,可以很直觀的了解到程序對(duì)頭文件
    的頭像 發(fā)表于 06-22 10:05 ?6869次閱讀
    <b class='flag-5'>C</b> <b class='flag-5'>語(yǔ)言</b>的<b class='flag-5'>頭文件</b>路徑位置問(wèn)題

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

    C語(yǔ)言中頭文件能不能重復(fù)包含? 比如代碼寫(xiě)成這樣,stdio.h 連續(xù)包含了兩次。 #include #include int main(){ printf("helloworld
    的頭像 發(fā)表于 11-26 17:19 ?561次閱讀
    主站蜘蛛池模板: 欧美在线伊人 | 欧美一级免费在线观看 | 欧美一区二区视频在线观看 | 国内精品视频在线 | 亚洲国产成人久久精品图片 | 午夜片在线 | 男女一进一出无遮挡黄 | 理论免费 | 韩国特黄特色a大片免费 | 国产欧美久久久精品影院 | 99热最新网址 | 女人张开双腿让男人桶爽免 | 免费视频色| 加勒比一到三区 | 亚洲一区免费视频 | 亚洲欧洲一二三区 | 欧美zooz人禽交免费观看 | 五月激情在线 | 美女被免费网站91色 | 一级片在线免费观看 | 色偷偷网址| 天天插天天射天天操 | 特黄特黄特色大片免费观看 | 成人久久伊人精品伊人 | 国产一区二区在线观看免费 | 免费伦费一区二区三区四区 | 一级黄色片在线看 | 成人性色生活片免费看爆迷你毛片 | 免费啪 | 人人看人人鲁狠狠高清 | 色老头成人免费综合视频 | 午夜色视频| 一级特黄视频 | 四虎影院在线免费观看 | 在线观看亚洲一区二区 | 美女张开腿让男生桶出水 | 欧美成人亚洲欧美成人 | 简单视频在线播放jdav | 1024 cc香蕉在线观看看中文 | 毛片综合 | 日本黄色短视频 |