求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

變更

前往: 導覽搜尋

Include

增加 4,137 位元組, 2 年前
创建页面,内容为“{| class="wikitable" align="right" |- | style="background: #FF2400" align= center| '''<big>Include</big>''' |- |<center><img src=https://p1.ssl.qhimg.com/t019159ee6…”
{| class="wikitable" align="right"
|-
| style="background: #FF2400" align= center| '''<big>Include</big>'''
|-
|<center><img src=https://p1.ssl.qhimg.com/t019159ee6fc83d4057.png width="300"></center>
<small>[https://baike.so.com/gallery/list?ghid=first&pic_idx=1&eid=5456513&sid=5694901 来自 网络 的图片]</small>
|-

|-

| align= light|
|}
'''Include'''是一个计算机专业术语,一指C/C++中包含头文件命令,用于将指定头文件嵌入源文件中。二指include 指令,在JSP中包含一个静态的文件,同时解析这个文件中的JSP语句。三指PHP语句。
=='''简介'''==
做c/c++[[编程]]的对#include指令都不会陌生,绝大多数人也都知道如何使用,但我相信仍有人对此是一知半解的,

C:

#include <stdio.h>

C++:

#include <iostream>

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

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

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

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

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

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

a.保护宏(暂且称为Macro guard 宏卫兵?):

#ifndef _ABCDE_H

#define _ABCDE_H

/*

代码部分

*/

#endif

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

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

b.#pragma once

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

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

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

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

declaration

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

例如:

int main(void)

{

int a; // 声明了变量a,类型为int

int *pa; // 声明了变量pa,类型为指向int型的指针类型

}

definition

定义:除了以下情况,声明就是定义

a.声明函数但不包括函数体;

b.声明包含extern链接限定符,例如:extern int a;

c.声明既没有初始化语法,也没有函数体;

d.类声明中声明静态数据成员;

e.类名字声明;

f.typedef声明;

g.using声明或者using指令;

以上情况适用于C具有的特征,C++则完全适用,一般来说定义要为其对象分配或预留存储空间,而声明则不用。

translation unit

编译单元:一个源文件,.c .cpp等和它所包含的文件一起,在经过预处理之后形成一个源码文件,标准称之为translation unit(编译单元)包括一系列的声明和定义;一个program(程序)由一个或多个编译单元组成。编译器将各个编译单元编译为目标代码(.obj),通过连接器(linker)将这些编译后的编译单元(即目标代码)连接成完整的指令序列(可执行文件、静态库、动态库等)。

one definition rule

一次定义规则:是指定义在所有进入连接的编译单元中只能有一次。

<ref>[https://baike.so.com/doc/5456513-5694901.html Include]搜狗</ref>
=='''参考文献'''==
41,228
次編輯