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

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

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

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

C語言中程序員編寫的頭文件和編譯器自帶的頭文件

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-11-12 14:55 ? 次閱讀

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

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

引用頭文件相當(dāng)于復(fù)制頭文件的內(nèi)容,但是我們不會直接在源文件中復(fù)制頭文件的內(nèi)容,因為這么做很容易出錯,特別在程序是由多個源文件組成的時候。

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

引用頭文件的語法

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

#include

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

#include"file"

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

引用頭文件的操作

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

char*test (void);

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

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

編譯器會看到如下的代碼信息

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

只引用一次頭文件

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

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

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

有條件引用

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

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

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

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

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

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

    關(guān)注

    68

    文章

    19384

    瀏覽量

    230494
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

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

    關(guān)注

    1

    文章

    1639

    瀏覽量

    49198

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    C語言必備知識頭文件包含

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

    如何編寫自己的C語言頭文件

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

    C 18編譯器頭文件問題

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

    STC單片機在KEIL編譯器中的頭文件

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

    怎么在keil里建立頭文件

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

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

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

    C語言頭文件是做什么的

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

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

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

    C語言頭文件組織與包含原則

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

    編程中引用頭文件的幾種方法及要點

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

    MCU_頭文件編寫

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

    C語言頭文件路徑的剖析

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

    C 語言頭文件路徑位置問題

    前言 前段時間在寫 Linux 專欄的過程中,忽然想到一個問題 :C語言頭文件路徑,因為在GCC環(huán)境下面,可以很直觀的了解到程序頭文件
    的頭像 發(fā)表于 06-22 10:05 ?6350次閱讀
    <b class='flag-5'>C</b> <b class='flag-5'>語言</b>的<b class='flag-5'>頭文件</b>路徑位置問題

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

    C語言中頭文件能不能重復(fù)包含? 比如代碼寫成這樣,stdio.h 連續(xù)包含了兩次。 #include #include int main(){ printf("helloworld
    的頭像 發(fā)表于 11-26 17:19 ?205次閱讀
    主站蜘蛛池模板: 一二三四日本视频社区| 热之国产| 午夜精品久久久久久久| 欧美一级在线观看视频| 午色| 777奇米四色米奇影院在线播放| 久久综合九色综合欧洲| 色狠狠狠色噜噜噜综合网| 在线资源你懂的| 日本a级特黄三级三级三级| 午夜黄色影院| 国产久热精品| 深夜视频在线观看免费| 亚洲日本中文字幕天天更新| 国模人体一区二区三区| 男人的天堂色偷偷之色偷偷 | 一级片特黄| 97影院理论| 国产理论| 国产美女在线精品观看| 最新欧美一级视频| 草色在线| 国产 麻豆| 国产精品久久久久网站| 国产福利不卡一区二区三区| 亚洲小视频| 国产午夜精品久久久久免费视小说| 久久香蕉国产视频| 黄页网站视频免费 视频| 天天干天天射天天| 天天操天天碰| 欧美高清激情毛片| 国产在线精品香蕉综合网一区| 日本老师69xxxxxxxxx| 亚洲啪啪| 狠狠乱| 亚洲第九页| 特黄特色大片免费视频播放| 上课被同桌摸下面做羞羞| 亚洲综合激情网| 特级片在线观看|