使用程序文件:

头文件:这种文件一般用文件扩展名.h来标识。

源文件:其扩展名通常是.cpp。

.cpp文件主要包含确定程序做什么的代码,它们由函数定义组成。

.h文件包含函数声明(即函数原型,但不是定义)、内联函数定义、枚举和自己的类型定义,以及预处理器指令。应避免把函数定义放在.h文件中(inline函数是一个例外),否则该函数在程序中就有重复的定义,导致链错误。

.h 文件还可以包含在两个或多个.cpp 文件中共享的常量定义。

每个.cpp 文件必须包含它需要的头文件。

在编译程序时,只编译.cpp 文件,根据#include 指令,该文件包含了程序需要的头文件内容。

编译的每个.cpp 文件都会生成一个对象文件。术语"对象文件"与类对象没有任何关

系。对象文件只是包含编译器的二进制输出的文件,它常常用扩展名.obj 来标识。对

象文件由链接程序组合到一个可执行模块中,该模块的扩展名通常是.exe 。

名称的隐藏:

可以在外部作用域中定义一个与内部作用域相同的名称,此时,在内部作用域中定义的名称会遮挡了外部作用域中的名称。

访问隐藏的名称:

可以使用作用域解析运算符::选择在外部作用域中定义的变量,而不是在当前作用域中的同名变量。

外部名称:
       编译器并不介意函数的定义是在同一个文件中,还是在另一个.cpp 文件中,这是因为函数名在默认情况下具有外部链接属性。如果函数没有在调用它的转换单元中定义,编译器就会把这个调用标记为外部,让链接程序处理它。

变量名是不同的。如果希望用一个名称访问当前转换单元外部的变量,就必须用extem 关键字来声明该变量,如: extern double pi; 这个语句声明名称pi在当前块的外部定义,类型必须对应于定义中的类型。在extern声明中不能有初始值。但在定义变量时,若把它们声明为const,则会在默认的情况下使它们具有内部链接属性,这样就不能在其他转换单元中使用它们了,为此,在定义这些变量时,可以使用extern关键字重写这个属性。

如果给定块中的一个名称有extem 声明,就不能在同一个块中定义该名称。

命名空间:

命名空间是程序中的一个区域,该区域把一个额外的名称(即命名空间的名称)附加到该区域中的所有实体名上。两个不同的命名空间可以包含同名的实体,但这些实体是不同的,因为它们都附加了不同的命名空间名称。

标准库是在命名空间std 中定义的。这就是说,标准库中的每个外部名称都加上了前缀std 。例如,输出流的名称是std::cout。运算符::是作用域解析运算符的二元形式,上面的语句给名称cout 和endl 加上了修饰符,这就告诉编译器,这些名称的定义在std 命名空间中。当然,本书前面的例子都使用了std 命名空间中的名称,或者为名称添加如下的using 声明:

using std:: cout; 通过如下的using 指令,就可以使用命名空间中的任意名称:using namespace std; 但是,这完全偏离了使用命名空间的目的,增加了不小心使用std 命名空间中的名称而出错的可能性。因此,最好使用限定的名称,或者为std 命名空间中要使用的名称加上using 声明。

C++之 程序文件和预处理相关推荐

  1. C语言程序设计 | 程序环境和预处理:翻译环境和执行环境、宏、条件编译

    程序环境和预处理: 翻译环境和执行环境 宏 条件编译 翻译环境和执行环境 在ANSI C的任何一种实现中,存在两种不同的环境. 第一种是翻译环境,在这个环境中源代码被转换成可执行的机器指令.第二种是执 ...

  2. C++头文件,预处理详解

    一个例子 C++遵循先定义,后使用的原则.就拿函数的使用来举例吧. 我看过有些人喜欢这样写函数. #include<iostream> using namespace std;int ad ...

  3. 每个c语言程序文件的编译错误被分为什么,已打印中央电大C语言考试题库(c语言小题+编程)...

    C语言程序设计课程期末复习练习 一.单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( A ). A. main B. MAIN C. name D. function 2.每 ...

  4. 正确理解以下名词及其含义:(1)源程序,目标程序,可执行程序(2)程序编辑,程序编译,程序连接(3)程序,程序模块,程序文件 (4)函数,主函数,被调用函数,库函数

    正确理解以下名词及其含义: (1)源程序,目标程序,可执行程序. ​ 源程序:指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令 ​ 目标程序:为源程序经编译可直接被 ...

  5. 【C语言进阶17——程序环境和预处理】

    程序环境和预处理 前言 1.程序的翻译环境和执行环境 2.详解C语言程序的编译和链接 2.1 翻译环境 2.2 编译具体阶段 2.3 查看编译每一步 2.4 程序执行的过程 3.预处理 3.1 预定义 ...

  6. 学C/C++想提升功底 可以花点时间看看这篇博客---C语言程序环境和预处理

    本篇博客介绍了C语言程序环境和预处理.主要包含程序的翻译和运行环境和 各种预处理操作:预定义符号.各种#define 用法 undef的使用条件编译的使用 头文件包含指令 C语言程序环境和预处理 一. ...

  7. bilibiliclass76-80_C语言_程序的编译(预处理操作)+链接

    程序环境和预处理 本章重点: 程序的翻译环境 程序的执行环境 详解:C语言程序的编译+链接 预定义符号介绍 预处理指令 #define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令 ...

  8. [C/C++]C语言的程序环境和预处理

    本文主要讲述C语言的程序环境和预处理. 一.程序的翻译环境和执行环境 存在源代码转换为可执行的机器指令的翻译环境和实际执行代码的执行环境,两个不同的环境.       1.翻译环境 每个源文件通过编译 ...

  9. 正确理解以下名词及其含义1源程序,目标程序,可执行程序2程序编辑,程序编译,程序连接3程序,程序模块,程序文件4函数,主函数,被调用函数,库函数5程序调试,程序测试

    正确理解以下名词及其含义: (1)源程序,目标程序,可执行程序. 源程序:指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令目标程序:为源程序经编译可直接被计算机运行 ...

最新文章

  1. 一次线上故障之Java对象的一生简单总结
  2. char[1] or char*
  3. 【转】css行高line-height的一些深入理解及应用
  4. 【POJ 2485】 Highways
  5. mysql定时执行存储过程
  6. 树莓派学习——音频视频播放
  7. jsp中文件下载的实现
  8. python md5解密_python写一个md5解密器示例
  9. html如何绘制棒棒糖,如何使用css来画一个棒棒糖
  10. SQL Server 2008下日志清理方法
  11. mfc 禁用子菜单_MFC界面开发难上手?BCGControlBar v30.3帮你忙—工具栏和菜单
  12. 【Flutter】Dart的方法与箭头函数
  13. Python FastAPI 微信公众号后台服务器验证
  14. 电子劳动合同具备法律效力,电子签约或成大势所趋
  15. Android那些你可能没了解过的---碎片化
  16. 中国科技论文在线期刊模板出现了格式问题,怎么解决?
  17. 什么是缓存雪崩、击穿、穿透?
  18. c语言 英文单词频率统计 哈希存储
  19. 如何搭建和使用GNS3服务器
  20. Unity制作出《超级马里奥》的2D和3D混合效果

热门文章

  1. python批量处理excel数据_Python批量处理Excel,真香(超实用!)
  2. 程序员合同日期不到想辞职_辞职报告怎么写最简单?写清楚理由和时间,签上姓名就OK了...
  3. node mysql 模块化_Node.js中的模块化
  4. python h5s文件 压缩_如何用python解压zip压缩文件
  5. Python的pyproject.toml文件中的tool.poetry.dev-dependencies选项
  6. 【编程语言】Python-Pandas库中的交叉表
  7. java当前路径_java获取当前路径的几种方法
  8. mysql存储引擎 sql_MySQL——存储引擎与SQL数据类型
  9. 单击托盘显示菜单mfc_PhotoShop制作滚动菜单栏教程
  10. 关闭java程序脚本-linux