头文件

Multi tool use
在程序设计中,特别是在C语言和C++中,头文件或包含文件是一个文件,通常是源代码的形式,由编译器在处理另一个源文件的时候自动包含进来。一般来说,程序员通过编译器指令将头文件包含进其他源文件的开始(或头部)。
一个头文件一般包含类、子程序、变量和其他标识符的前置声明。需要在一个以上源文件中被声明的标识符可以被放在一个头文件中,并在需要的地方包含这个头文件。
在C语言和C++中,标准库函数习惯上在头文件中声明,参见C标准函式库和C++标准函式库。
目录
1 作用
2 替代
3 #include语句的两种语法
4 参见
5 外部链接
作用
在大多数现代计算机编程语言中,程序可以被分成如子程序的更小的组件,这些组件可以通过许多物理源文件分发,这些源文件被单独编译。当一个子程序在定义的位置以外的地方被使用时,就需要引入前置声明和函数原型的概念。例如,一个函数在一个源文件中有如下定义:
int add(int a, int b)
{
return a + b;
}
在另一个源文件中引用的时候就可以声明成这样(包含函数原型):
int add(int, int);
int triple(int x)
{
return add(x, add(x, x));
}
但是,这个简单的方法需要程序员为add
在两个地方维护函数声明,一个是包含函数实现的文件,以及使用该函数的文件。如果函数的定义改变了,程序员必须要更改散布在程序中的所有的原型。
头文件提供了解决办法。模块的头文件声明作为模块公共接口一部分的每一个函数、对象以及数据类型。例如,在下面的情况下,头文件仅包含add
的声明。每一个引用了add
的源文件使用#include
来包含头文件:
/* File add.h */
#ifndef ADD_H
#define ADD_H
int add(int, int);
#endif /* ADD_H */
/* File triple.c */
#include "add.h"
int triple(int x)
{
return add(x, add(x, x));
}
这样就减少了维护的负担:当定义改变的时候,只须更新声明的一个独立副本(在头文件中的那个)。在包含对应的定义的源文件中也可以包含头文件,这给了编译器一个检查声明和定义一致性的机会。
/* File add.c */
#include "add.h"
int add(int a, int b)
{
return a + b;
}
通常,头文件被用来唯一指定接口,且多少提供一些文档来说明如何使用在该文件中声明的组件。在这个例子中,子程序的实现放在一个单独的源文件中,这个源文件被单独编译。(在C和C++中有个例外,即内联函数。内联函数通常放在头文件中,因为大多数实现如果不知道其定义,在编译时便无法适当的展开内联函数。)
替代
在访问声明在不同文件中的标识符问题上,头文件不是唯一的解决方法。他们也有缺点,当定义改变的时候可能仍然需要在两个地方来修改(头文件和源文件)。一些更新的语言(如Java)省略掉了头文件,而使用命名规则(naming scheme),这就允许编译器来定位与接口和类实现相关的源文件。
#include语句的两种语法
#include
语句有两种方式包含头文件,分别是使用双引号" "
与左右尖括号< >
。其区别是(对于不是使用完全文件路径名的)头文件的搜索顺序不同:
使用双引号" "
的头文件的搜索顺序:
- 包含该
#include
语句的源文件所在目录;
- 包含该
#include
语句的已经打开的头文件的逆序(因为头文件可以#include
另一个头文件构成一个序列);
- 编译选项-I所指定的目录
- 环境变量INCLUDE所定义的目录
使用左右尖括号< >
的头文件的搜索顺序:
- 编译选项-I所指定的目录
- 环境变量INCLUDE所定义的目录
参见
- 应用程序接口
- 接口定义语言
- #pragma once
外部链接
- 组织代码文件(以及使用头文件的陷阱)
- C++头文件包含规则
b2JdpNqEfm
Popular posts from this blog
body.skin-minerva .mw-parser-output table.infobox caption{text-align:center} GameSpot 戰地風雲:惡名昭彰2在Gamespot的評論 网站类型 新聞 持有者 CBS 创始人 Pete Deemer Vince Broady Jon Epstein 网站 http://www.gamespot.com/ 注册 Optional (free and paid) 推出时间 1996年5月1日 [1] GameSpot (中国大陆:游戏基地),於1996年5月由Pete Deemer和Vince Broady創立,是一個提供新聞、評論、預告片、下載及其他的相關資訊的電子遊戲網站。GameSpot被一間後來被CNET收購的企業ZDNet所收購。根據Alexa,GameSpot.com是200個網路擁擠最嚴重的網站之一。 除了由GameSpot員工創作的內容,網站還允許用戶寫評論、網誌、之後在網路論壇分享。一些在CNET旗下的GameFAQs分享。 2004年, GameSpot被Spike TV的觀眾選上「電子遊戲賞節目」贏得「最傑出遊戲網站。 [2] 其他的遊戲網站還有IGN、1UP.com、GameSpy是它最大的競爭對手。2008年,根據Compete.com的統計,「gamespot.com」吸引了最少6000萬人的點擊率。 [3] GameSpot的主頁鏈結了到最近新聞、評論、預告、和一些有關遊戲機的入口:Wii、任天堂DS、電腦遊戲、Xbox 360、PSP、PlayStation 2、PlayStation 3。它還有一列「最受歡迎遊戲名單」,還有給用戶快速獲得遊戲資訊的搜尋器。GameSpot 還包括一些小範圍的遊戲機:任天堂64、GameCube、Game Boy Color、Game Boy Advance、Xbox、PlayStation、SEGA Saturn、Dreamcast、Neo Geo Pocket Color、N-Gage、手機遊戲。 目录 1 歷史 1.1 國際歷史 1.2 著名的員工 2 評論和分...
body.skin-minerva .mw-parser-output table.infobox caption{text-align:center} 日野市 日野市 日文轉寫 • 日文 日野市 • 平假名 ひのし • 罗马字 Hino-shi 金剛寺(關東三十六不動尊靈場第9號)的不動堂 市旗 徽章 日野市在東京都的位置 日野市 日野市在日本的位置 坐标: 35°40′17″N 139°23′42″E / 35.6714°N 139.395°E / 35.6714; 139.395 国家 日本 地方 關東地方 都道府縣 東京都 接鄰行政區 府中市、國立市、立川市、昭島市、八王子市、多摩市 政府 • 市長 大坪冬彦 面积 • 总计 27.53 平方公里(10.63 平方英里) 人口 (2014年12月1日) • 總計 183,323 • 密度 6,660/平方公里(17,200/平方英里) 象徵 • 市樹 樫 • 市花 菊花 • 市鳥 普通翠鳥 时区 日本標準時間 (UTC+9) 地方公共團體編號 13212-8 邮政编码 〒 191-8686 市役所地址 日野市神明一丁目12番1號 電話號碼 +81-42-585-1111 法人編號 1000020132128 網站 http://www.city.hino.lg.jp/ 人口:日野市官方網頁 日野市 (日语: 日野市 / ひのし Hino shi * / ? )為一位于東京都(不含島嶼部分)中央地帶的城市。從東京站乘坐中央線特別快速列車45分鐘即可到該市。面積27.53km²。1963年(昭和38年)11月3日,該市開始實行市制,為全日本第559個市。汽車企業日野自動車的總部位於這裡。 往東京都特別區部的通勤率為20.9%,往八王子市的通勤率為12.0%(平成22年國勢調査)。 目录 1 概要 ...
body.skin-minerva .mw-parser-output table.infobox caption{text-align:center} 图-95 Ту–95 北约代号:熊(Bear) 一架在安格斯空军基地的图-95MS 概觀 類型 战略轰炸机 代號 北约代号: Bear (熊) 乘員 7名 駕駛員2名,機尾炮手1名,其他人員4名 首飛 1952年11月12日 服役 1956年 設計 圖波列夫設計局 產量 超过500架 現況 现役 主要用戶 蘇聯 俄羅斯 衍生機型 图-114、图-119、Tu-95 技术数据 長度 49.50米(162呎5吋) 翼展 51.10米(167呎8吋) 高度 12.12米(39呎9吋) 翼面積 310平方米(3,330平方呎) 空重 90,000公斤(198,000磅) 最大起飛重量 188,000公斤(414,500磅) 發動機 4具库兹涅佐夫NK-12MV型渦輪螺旋槳發動機 功率 4×11,000千瓦(14,800馬力) 性能數據 最大速度 925公里/時(500節,575哩/時) 爬升率 10米/秒(2,000呎/分) 最大升限 12,000米(39,000呎) 最大航程 15,000公里(8,100海浬,9,400哩) 翼負荷 606公斤/平方米(124磅/平方呎) 推重比 235 W/公斤(0.143馬力/磅) 武器装备 機炮 1具/2具AM-23型23公釐雷達控制機砲(機尾) 飛彈 空对地导弹: Kh-20、Kh-22 Kh-26、Kh-55 炸彈 60枚FAB-250炸彈,或 30枚FAB-500炸彈。 其他 载弹量(包括飞弹):最多15,000公斤(33,000磅) Tu-95熊式MR型機 图-95 (俄语: Ту–95 , 英语: Tu-95 ),北約代號: Bear ( 熊 ),是蘇聯圖波列夫設計局所研製,是全世界唯一服役的大型四渦輪螺旋槳發動機...