谈谈对C和C++中include指令的使用及其理解.doc_第1页
谈谈对C和C++中include指令的使用及其理解.doc_第2页
谈谈对C和C++中include指令的使用及其理解.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

做c/c+编程的对#include指令都不会陌生,绝大多数也都知道如何使用,但我相信仍有人对此是一知半解, C:#include C+:#include 表示包含C/C+标准输入头文件。包含指令不仅仅限于。h头文件,可以包含任何编译器能识别的C/C+代码文件,包括。c,。hpp,。cpp,。hxx,。cxx等,甚至。txt,。abc等等都可以2.名词解释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声明:指将一个名称引入当前编译单元,或者重新声明一个前面已经声明过的名称,声明指定了如何解释一个名称和该名称具有的属性;例如:int main(void)int a; / 声明了变量a,类型为intint *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一次定义规则:是指定义在所有进入连接的编译单元中只能有一次。3.观点、例子A:头文件只放声明example

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论