日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言头文件深入理解

發(fā)布時(shí)間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言头文件深入理解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C語(yǔ)言程序中,源文件通常分為兩種:一種用于保存程序的聲明(declaration),稱為頭文件;另一種用于保存程序的實(shí)現(xiàn)(implementation),稱為定義(definition)文件。 C程序的頭文件以“.h”為后綴,C 程序的定義文件以“.c”為后綴。

可以將 .h 文件的內(nèi)容寫(xiě)在 .c 文件中,也可以將 .c 文件的內(nèi)容寫(xiě)在 .h 中,但這是很不好的習(xí)慣。許多初學(xué)者用了頭文件,卻不明其理。在此略作說(shuō)明。

在以下場(chǎng)景中會(huì)使用頭文件:
  • 通過(guò)頭文件來(lái)調(diào)用庫(kù)功能。在很多場(chǎng)合,源代碼不便(或不準(zhǔn))向用戶公布,只要向用戶提供頭文件和二進(jìn)制的庫(kù)即可。用戶只需要按照頭文件中的接口聲明來(lái)調(diào)用庫(kù)功 能,而不必關(guān)心接口怎么實(shí)現(xiàn)的。
  • 多文件編譯。將稍大的項(xiàng)目分成幾個(gè)文件實(shí)現(xiàn),通過(guò)頭文件將其他文件的函數(shù)聲明引入到當(dāng)前文件。
  • 頭文件能加強(qiáng)類型安全檢查。如果某個(gè)接口被實(shí)現(xiàn)或被使用時(shí),其方式與頭文件中的聲明不一致,編譯器就會(huì)指出錯(cuò)誤,這一簡(jiǎn)單的規(guī)則能大大減輕程序員調(diào)試、改錯(cuò)的負(fù)擔(dān)。

編譯時(shí)只有函數(shù)聲明沒(méi)有函數(shù)定義是完全正確的。函數(shù)聲明告訴編譯器該函數(shù)已經(jīng)存在,但是入口地址還未確定,暫時(shí)在此做個(gè)標(biāo)記,鏈接時(shí)編譯器會(huì)找到函數(shù)入口地址,并將標(biāo)記替換掉。

編譯產(chǎn)生的 .obj 文件(Linux下為 .o 文件)已經(jīng)是二進(jìn)制文件,與 .exe 的組織形式類似,只是有些函數(shù)的入口地址還未找到,程序不能執(zhí)行。鏈接的作用就是找到函數(shù)入口地址,將所有的源文件組織成一個(gè)可以執(zhí)行的二進(jìn)制文件。

關(guān)于頭文件的內(nèi)容,初學(xué)者還必須注意:
  • 頭文件中可以和C程序一樣引用其它頭文件,可以寫(xiě)預(yù)處理塊,但不要寫(xiě)具體的語(yǔ)句。
  • 可以申明函數(shù),但不可以定義函數(shù)。
  • 可以申明常量,但不可以定義變量。
  • 可以“定義”一個(gè)宏函數(shù)。注意:宏函數(shù)很象函數(shù),但卻不是函數(shù)。其實(shí)還是一個(gè)申明。
  • 結(jié)構(gòu)的定義、自定義數(shù)據(jù)類型一般也放在頭文件中。
  • #include <filename.h>,編譯系統(tǒng)會(huì)到環(huán)境指定的目錄去引用。#include "filename.h",系統(tǒng)一般首先在當(dāng)前目錄查找,然后再去環(huán)境指定目錄查找。

好的風(fēng)格是成功的關(guān)鍵,版本申明、函數(shù)功能說(shuō)明、注釋等是C語(yǔ)言程序的一部分。不養(yǎng)成很好的習(xí)慣則不能成為C語(yǔ)言高手(專業(yè)人員)。

C標(biāo)準(zhǔn)庫(kù)中,每一個(gè)庫(kù)函數(shù)都在一個(gè)頭文件中聲明,可以通過(guò) #include 預(yù)處理命令導(dǎo)入。

頭文件只是聲明,不占內(nèi)存空間,編譯時(shí)會(huì)被合并到源文件;要想知道它的具體實(shí)現(xiàn),要看頭文件所聲明的函數(shù)是在哪個(gè) .c 文件里定義的,然后查看源代碼。

C標(biāo)準(zhǔn)庫(kù)共包含 15 個(gè)頭文件,可以分為 3 組,如何正確并熟練的使用它們,可以相應(yīng)的可區(qū)分出 3 個(gè)層次的程序員:
  • 合格程序員:<stdio.h>、<ctype.h>、<stdlib.h>、<string.h>
  • 熟練程序員:<assert.h>、<limits.h>、<stddef.h>、<time.h>
  • 優(yōu)秀程序員:<float.h>、<math.h>、<error.h>、<locale.h>、<setjmp.h>、<signal.h>、<stdarg.h>

各個(gè)頭文件的具體內(nèi)容請(qǐng)查看: C語(yǔ)言標(biāo)準(zhǔn)庫(kù)

C語(yǔ)言頭文件具有以下幾個(gè)特性:
  • 冪等性。可以多次包含相同的標(biāo)準(zhǔn)頭文件,但效果與只包含一次相同。
  • 相互獨(dú)立。任何標(biāo)準(zhǔn)頭文件的正常工作都不需要以包含其他標(biāo)準(zhǔn)頭文件為前提。也沒(méi)有任何標(biāo)準(zhǔn)頭文件包含了其他標(biāo)準(zhǔn)頭文件。
  • 和文件級(jí)別的聲明等同。必須先把某標(biāo)準(zhǔn)頭文件包含到你的程序中, 然后才能使用該頭文件已定義或聲明的東西。不能在聲明中包含標(biāo)準(zhǔn)頭文件。并且,也不能在包含標(biāo)準(zhǔn)頭文件之前用宏定義去代替關(guān)鍵字。

等冪性是很容易實(shí)現(xiàn)的,對(duì)于大多數(shù)的頭文件可以使用宏保護(hù)。例如,在 stdio.h 中可以有如下的宏定義:
  • #ifndef _STDIO_H
  • #define _STDIO_H
  • /* 主要實(shí)現(xiàn)部分 */
  • #endif

  • 在C程序員中所達(dá)成的一個(gè)約定是:C源文件的開(kāi)頭部分要包含所有要用到的頭文件。在 #include 指令之前只能有一句注釋語(yǔ)句。引入的頭文件可以按任意順序排列。

    如果我們自己編寫(xiě)的頭文件可能會(huì)用到標(biāo)準(zhǔn)頭文件中的定義或者聲明,最好把標(biāo)準(zhǔn)頭文件包含在自定義頭文件的開(kāi)頭。這樣,就不會(huì)在程序中忘記引入該標(biāo)準(zhǔn)頭文件,也不會(huì)有順序問(wèn)題。這正是利用了頭文件的等冪性。

    注意一個(gè)約定,引入標(biāo)準(zhǔn)頭文件用尖括號(hào),引入自定義頭文件用雙引號(hào),例如:
  • #include <stdio.h>
  • #include "myFile.h"

  • C語(yǔ)言庫(kù)函數(shù)是頭文件的最佳實(shí)踐,仔細(xì)閱讀各個(gè)頭文件的內(nèi)容,尤其是 stdio.h,能夠?qū)W到很多東西。

    在 VC6.0 中找到頭文件

    C標(biāo)準(zhǔn)頭文件,例如 stdio.h、string.h 等在 VC6.0 的安裝目錄中是可以找到的。我的 VC6.0 安裝在?C:\Program Files\Microsoft Visual Studio\ 目錄,那么 VC6.0 附帶的所有頭文件(包括但不限于標(biāo)準(zhǔn)頭文件)都在?C:\Program Files\Microsoft Visual Studio\VC98\Include\ 目錄下。

    如果忘記 VC6.0 的安裝目錄或者頭文件不在安裝目錄下,可以通過(guò)以下方式找到:

    1) 在工具欄中點(diǎn)擊“工具”按鈕

    2) 在二級(jí)菜單中選擇“選項(xiàng)”

    3) 在彈出的對(duì)話框中選擇“目錄”標(biāo)簽

    4) 然后選擇名字為“目錄”的下拉菜單中的“Include files”一項(xiàng),如下圖所示:

    轉(zhuǎn)自:http://see.xidian.edu.cn/cpp/html/2570.html

    與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的C语言头文件深入理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 黑人乱码一区二区三区av | 一区二区三区久久精品 | 性做爰裸体按摩视频 | 国产福利视频一区 | 在线国产小视频 | 国产一区二区三区日韩 | 欧美日韩精品一二三区 | 黄av网站| 少妇人妻一区 | av天天草 | 少妇名器的沉沦 | 国产美女精品 | 三区四区 | 一级片免费网址 | 国产av日韩一区二区三区精品 | 久久精品8| 爱综合网 | 欧性猛交ⅹxxx乱大交 | 久91 | 国产美女作爱视频 | 中文字幕日本视频 | 人妻妺妺窝人体色www聚色窝 | 超碰在线观看免费版 | 北京少妇xxxx做受 | 中文字幕久热 | 特大黑人娇小亚洲女mp4 | 肉丝肉足丝袜一区二区三区 | 久久露脸国语精品国产 | 18成人免费观看网站下载 | 亚洲av少妇一区二区在线观看 | 99久国产 | 免费观看成人在线视频 | 亚洲精品一线二线三线 | 午夜视频www | 欧美一区二区三区在线免费观看 | 午夜在线视频观看 | 一本色道久久亚洲综合精品蜜桃 | 国产一线二线在线观看 | 9.1在线观看免费 | 精品无码久久久久成人漫画 | 欧美69囗交视频 | 99r精品视频 | 91成人黄色 | 亚洲午夜精品在线 | 高跟肉丝丝袜呻吟啪啪网站av | 裸体女视频 | 人妻无码一区二区三区久久99 | 欧美无人区码suv | 亲子伦视频一区二区三区 | 极品91尤物被啪到呻吟喷水 | 久久99精品国产麻豆婷婷洗澡 | 国产网站在线免费观看 | 久久免费国产精品 | 老司机亚洲精品 | 老女人人体欣赏a√s | 日日摸日日干 | 一级特毛片 | 热逼视频 | 一区二区日本 | 亚洲一区二区三区久久久成人动漫 | 在线中文字幕亚洲 | 一区二区精品视频 | 国产最新视频 | 欧美激情15p| 久久亚洲高清 | 囯产精品一品二区三区 | 综合婷婷| 成人羞羞国产免费游戏 | 午夜亚洲福利 | gav成人 | 欧美综合在线观看 | 亚洲伊人av | 中文字幕第十一页 | 亚洲福利在线播放 | 久久久久久久久成人 | 视频一区二区中文字幕 | 欧美不在线 | 丰满少妇一区二区三区 | 亚洲视频精品在线观看 | 中文字幕一区二区在线老色批影视 | 成人国产精品免费 | 五月天婷婷在线观看 | japanesexxxx日本妞 | 性高跟鞋xxxxhd国产电影 | 国产午夜精品一区二区理论影院 | 久久久久久久久网站 | 日日摸夜夜添狠狠添久久精品成人 | 亚洲福利久久 | 怡红院男人天堂 | 亚洲精品国产成人 | 亚洲www啪成人一区二区麻豆 | 精品麻豆 | 欧美一区免费观看 | 视频一区二区中文字幕 | 中文字幕视频在线观看 | 看全色黄大色黄大片女一次牛 | 亚洲色婷婷久久精品av蜜桃 | 在线观看日批视频 | 99精品无码一区二区 |