• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 解析C++编程中的#include和条件编译

解析C++编程中的#include和条件编译

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ include,c++ include的用法,c++ sort include,include c++ support,c++条件运算符等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

文件包含的作用

所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。C++提供了#include命令用来实现“文件包含”的操作。如在file1.cpp中有以下#include命令:

  #include ″file2.cpp″
</div>

它的作用见图示意。


“文件包含”命令是很有用的,它可以节省程序设计人员的重复劳动。

#include命令的应用很广泛,绝大多数C++程序中都包括#include命令。现在,库函数的开发者把这些信息写在一个文件中,用户只需将该文件“包含”进来即可(如调用数学函数的,应包含cmath文件—),这就大大简化了程序,写一行#include命令的作用相当于写几十行、几百行甚至更多行的内容。这种常用在文件头部的被包含的文件称为“标题文件”或“头部文件”。

头文件一般包含以下几类内容:

  • 对类型的声明。
  • 函数声明。
  • 内置(inline)函数的定义。
  • 宏定义。用#define定义的符号常量和用const声明的常变量。
  • 全局变量定义。
  • 外部变量声明。如entern int a;
  • 还可以根据需要包含其他头文件。

不同的头文件包括以上不同的信息,提供给程序设计者使用,这样,程序设计者不需自己重复书写这些信息,只需用一行#include命令就把这些信息包含到本文件了,大大地提高了编程效率。由于有了#include命令,就把不同的文件组合在一起,形成一个文件。因此说,头文件是源文件之间的接口。
include命令的两种形式

在#include命令中,文件名除了可以用尖括号括起来以外,还可以用双撇号括起来。#include命令的一般形式为:
    #include <文件名>
或
    #include ″文件名″
如:
    #include <iostream>
或
    #include ″iostream″
都是合法的。二者的区别是: 用尖括号时,系统到系统目录中寻找要包含的文件,如果找不到,编译系统就给出出错信息。

有时被包含的文件不一定在系统目录中,这时应该用双撇号形式,在双撇号中指出文件路径和文件名。

如果在双撇号中没有给出绝对路径,如#include ″file2.c″则默认指用户当前目录中的文件。系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式查找。如果程序中要包含的是用户自己编写的文件,宜用双撇号形式。

对于系统提供的头文件,既可以用尖括号形式,也可以用双撇号形式,都能找到被包含的文件,但显然用尖括号形式更直截了当,效率更高。
关于C++标准库

在C++编译系统中,提供了许多系统函数和宏定义,而对函数的声明则分别存放在不同的头文件中。如果要调用某一个函数,就必须用#include命令将有关的头文件包含进来。C++的库除了保留C的大部分系统函数和宏定义外,还增加了预定义的模板和类。但是不同C++库的内容不完全相同,由各C++编译系统自行决定。不久前推出的C++标准将库的建设也纳入标准,规范化了C++标准库,以便使C++程序能够在不同的C++平台上工作,便于互相移植。新的C++标准库中的头文件一般不再包括后缀.h,例如:

  #include <string>
</div>

但为了使大批已有的C程序能继续使用,许多C++编译系统保留了C的头文件,即提供两种不同的头文件,由程序设计者选用。如:

  #include <iostream.h> //C形式的头文件
  #include <iostream> //C++形式的头文件
</div>


效果基本上是一样的。建议尽量用符合C++标准的形式,即在包含C++头文件时一般不用后缀。如果用户自己编写头文件,可以用.h为后缀。

C++条件编译#ifdef #else
一般情况下,在进行编译时对源程序中的每一行都要编译。但是有时希望程序中某一部分内容只在满足一定条件时才进行编译,也就是指定对程序中的一部分内容进行编译的条件。如果不满足这个条件,就不编译这部分内容。这就是“条件编译”。

有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。

条件编译命令常用的有以下形式:
1) #ifdef 标识符
    程序段1
#else
    程序段2
#endif

它的作用是当所指定的标识符已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。#endif用来限定#ifdef命令的范围。其中#else部分也可以没有。

2) #if 表达式
    程序段1
#else
    程序段2
#endif

它的作用是当指定的表达式值为真(非零)时就编译程序段1,否则编译程序段2。可以事先给定一定条件,使程序在不同的条件下执行不同的功能。

【例】在调试程序时,常常希望输出一些所需的信息,而在调试完成后不再输出这些信息,可以在源程序中插入条件编译段。下面是一个简单的示例。

#include <iostream>
using namespace std;
#define RUN //在调试程序时使之成为注释行
int main( )
{
  int x=1, y=2, z=3;
  #ifndef RUN //本行为条件编译命令
  cout<<"x="<<x<<", y="<<y<<", z="<<z<<"\n"; //在调试程序时需要输出这些信息
  #endif //本行为条件编译命令
  cout<<"x*y*z="<<x*y*z<<endl;
}
</div>

第3行用#define命令的目的不在于用RUN代表一个字符串,而只是表示已定义过RUN,因此RUN后面写什么字符串都无所谓,甚至可以不写字符串。在调试程序时去掉第3行(或在行首加//,使之成为注释行),由于无此行,故未对RUN定义,第6行据此决定编译第7行,运行时输出x,y,z的值,以便用户分析有关变量当前的值。运行程序输出:

  x=1, y=2, z=3
  x*y*z=6
</div>


在调试完成后,在运行之前,加上第3行,重新编译,由于此时RUN已被定义过,则该cout语句不被编译,因此在运行时不再输出x,y,z的值。运行情况为:

x*y*z=6
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解析C++编程中的#include和条件编译
  • C++常用的#include头文件总结
  • c++ #include是怎么样工作的?

相关文章

  • 2017-05-28C语言可变参数函数详解示例
  • 2017-05-28如何将C语言代码转换为应用程序(也就是编译)
  • 2017-05-28千万不要被阶乘吓倒
  • 2017-05-28在C++中反射调用.NET的方法(二)
  • 2017-05-28C/C++ 中堆和栈及静态数据区详解
  • 2017-05-28VC下通过系统快照实现进程管理的方法
  • 2017-05-28解析C++的线性表链式存储设计与相关的API实现
  • 2017-05-28关于《C和指针》的学习笔记
  • 2017-05-28在C语言中调用C++做的动态链接库
  • 2017-05-28简单了解C语言中直接插入排序与直接选择排序实现

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 基于C语言实现简单的走迷宫游戏
    • 解析C++中的虚拟函数及其静态类型和动态类型
    • C++中的常量定义小结
    • C++/Php/Python 语言执行shell命令的方法(推荐)
    • C++设计模式之职责链模式
    • c++中new和delete操作符用法
    • C 语言条件运算符详细讲解
    • C++中指针和引用的区别分析
    • 一般函数指针和类的成员函数指针深入解析
    • C++中单链表的建立与基本操作

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有