做C/C++编程的对#include指令都不会陌生,绝大多数人也都知道如何使用,但我相信仍有人对此是一知半解:

表示包含C/C++标准输入输出头文件。包含指令不仅仅限于.h头文件,可以包含任何编译器能识别的C/C++代码文件,包括.c、.hpp、.cpp、.hxx、.cxx等,甚至.txt、.abc等等都可以。

预处理器发现 #include 指令后,就会寻找指令后面<>中的文件名,并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源代码文件中的#include 指令, 就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。[1]

preprocess

预处理:为方便编译器处理而设置的一种机制,包括一些常用预处理指令和语句,我们统称为预处理系统。

如#include #define #if...#else...#endif #pragma等

这些指令的实现是由编译器来决定的(implementation specified)

提到预处理指令,顺便说一下头文件防止重复包含的2种方法

a.保护宏

#ifndef _ABCDE_H

#define _ABCDE_H

代码部分

#endif

在被包含过一次之后,宏_ABCDE_H已经有了,下次再碰到就会略过从#define _ABCDE_H开始到#endif之间的代码

还有一种特定编译器支持的指令:

b.#pragma once

能保证该文件(物理上的)只被编译一次,也能起到防止重复包含的作用

但这2种方式是有区别的:

a.Macro guard可移植性好,绝大多数编译器都支持,而且万一不小心拷贝了几分相同的代码也不会出问题,但你得确保这个宏名不会与其他的宏冲突,否则等编译器报出一大堆错误的时候你可能会觉得莫名其妙;

b.#pragma once指令简单,它能保证该文件(物理上的)只被编译一次,不用去费劲的想不同的宏名,但如果有几份该文件的拷贝,显然起不到作用。

declaration

声明:指将一个名称引入当前编译单元,或者重新声明一个前面已经声明过的名称,声明指定了如何解释一个名称和该名称具有的属性;

例如:

相关查询: include 都不会 绝大多数人 一知半解
最新查询:书博会 OfficePAC 红烧牛肉 情势所迫 少不了 光笔 Heights 马头山 社会秩序 怀恨在心 一路上 黑焰 dew 上坡路定点停车与坡道起步 女皇天下 劳伦兹 Karelia 葡萄方块饼干 Samsung New PC Studio 织物密度测试仪 两年制 内画壶 放在眼里 ۵ 山羊皮 不得强迫自证其罪原则研究 下定决心 director 小学生 卫生巾 丘吉尔 莱芜市 有志è€ 张航睿 Mastixia 卡尔梅克 单位成本 数据表 北京摇滚的心 埃默森四重奏组 老河口 图腾 三十年 西汉五凤熏炉 美国职棒大联盟最有价值球员奖 蒜茸百花茄 马列主义 充电器 新闻出版署 白矮星 赫拉特 蒙特利尔奥林匹克体育场 JavaScript实例教程习题解答与实验指导 周庄镇 卡路里 拉姆齐 哥廷根 白唇鹿 黑芝麻紫薯蛋糕卷 种子活力 盐浴 oersted 十七号 电离层发射波 蛤蜊汤 战俘营奥运会纪实 女仔 科威特国 山东省陶瓷艺术委员会 television 同志国歌 武林达人秀 地瓜籽 几乎不 pharyngitis 夜雨秋灯续录 西湖李村 内蒙古自治区 三塘湖 include
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.010秒 内存0.85MB