• 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++的内部和外部函数以及宏的定义

简单讲解C++的内部和外部函数以及宏的定义

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

通过本文主要向大家介绍了c++宏定义函数,c++宏表函数,c++宏定义,c++中宏定义,c++ 宏等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C++内部函数和外部函数
函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数只能被本文件调用,而不能被其他文件调用。根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。
内部函数

如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。函数首部的一般格式为:

  static 类型标识符 函数名(形参表);
</div>


如

  static int fun(int a, int b);
</div>


内部函数又称静态(static)函数。使用内部函数,可以使函数只局限于所在文件。如果在不同的文件中有同名的内部函数,互不干扰。通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都冠以static使之局部化,其他文件不能引用。
外部函数

在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。如函数首部可以写为:

  extern int fun (int a, int b);
</div>


这样,函数fun就可以为其他文件调用。如果在定义函数时省略extern,则默认为外部函数。本教程前面所用的函数都是外部函数。

在需要调用此函数的文件中,用extern声明所用的函数是外部函数。

【例】输入两个整数,要求输出其中的大者,用外部函数实现。

/*******file1.cpp(文件1)*******/
#include <iostream>
using namespace std;
int main( )
{
  extern int max(int,int); //声明在本函数中将要调用在其他文件中定义的max函数
  int a,b;
  cin>>a>>b;
  cout<<max(a,b)<<endl;
  return 0;
}
/*******file2.cpp(文件2)*******/
int max(int x,int y)
{
  int z;
  z=x>y?x:y;
  return z;
}
</div>

运行情况如下:

7 -34↙
7
</div>

在计算机上运行一个含多文件的程序时,需要建立一个项目文件(project file),在该项目文件中包含程序的各个文件。详细情况请查看:VC6.0使用教程。

通过此例可知:使用extern声明就能够在一个文件中调用其他文件中定义的函数,或者说把该函数的作用域扩展到本文件。extern声明的形式就是在函数原型基础上加关键字extern。由于函数在本质上是外部的,在程序中经常要调用其他文件中的外部函数,为方便编程,C++允许在声明函数时省写extern。例4.15程序main函数中的函数声明可写成:

  int max(int, int);
</div>

这就是我们多次用过的函数原型。由此可以进一步理解函数原型的作用。用函数原型能够把函数的作用域扩展到定义该函数的文件之外(不必使用extern)。只要在使用该函数的每一个文件中包含该函数的函数原型即可。函数原型通知编译系统:该函数在本文件中稍后定义,或在另一文件中定义。

利用函数原型扩展函数作用域最常见的例子是#include命令的应用。在#include命令所指定的头文件中包含有调用库函数时所需的信息。例如,在程序中需要调用sin函数,但三角函数并不是由用户在本文件中定义的,而是存放在数学函数库中的。按以上的介绍,必须在本文件中写出sin函数的原型,否则无法调用sin函数。sin函数的原型是:

  double sin(double x);
</div>


本来应该由程序设计者在调用库函数时先从手册中查出所用的库函数的原型,并在程序中一一写出来,但这显然是麻烦而困难的。为减少程序设计者的困难,在头文件cmath中包括了所有数学函数的原型和其他有关信息,用户只需用以下#include命令:

  #include <cmath>
</div>


即可。这时,在该文件中就能合法地调用各数学库函数了。

C++宏定义#define
可以用#define命令将一个指定的标识符(即宏名)来代表一个字符串。定义宏的作用一般是用一个短的名字代表一个长的字符串。它的一般形式为:

  #define 标识符 字符串
</div>


这就是已经介绍过的定义符号常量。如:

  #define PI 3.1415926
</div>


还可以用#define命令定义带参数的宏定义。其定义的一般形式为:

  #define 宏名(参数表) 字符串
</div>


如:

  #define S(a, b) a*b //定义宏S(矩形面积),a、b为宏的参数
</div>

使用的形式如下:

  area=S(3, 2);
</div> </div>


用3、2分别代替宏定义中的形式参数a和b,即用3*2代替S(3, 2)。因此赋值语句展开为:

  area=3*2;
</div>


由于C++增加了内置函数(inline),比用带参数的宏定义更方便,因此在C++中基本上已不再用#define命令定义宏了,主要用于条件编译中。

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

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

  • c++ 编程 几个有用的宏详解
  • 简单讲解C++的内部和外部函数以及宏的定义
  • 在C++中自定义宏的简单方法
  • C++基础入门教程(二):数据、变量、宏等
  • C/C++宏定义的可变参数详细解析

相关文章

  • 2017-05-28树形结构的3中搜索方式示例分享
  • 2017-05-28C++如何实现简单的计时器详解
  • 2017-05-28基于C++中sprintf的错误总结详解
  • 2017-05-28深入理解C预处理器
  • 2017-05-28c语言多线程编程使用示例
  • 2017-05-28关于C++中的static关键字的总结
  • 2017-05-28linux C 打印错误信息和标准输入输出详细介绍
  • 2017-05-28浅谈C++中的mutable和volatile关键字
  • 2017-05-28基于malloc与free函数的实现代码及分析
  • 2017-05-28C++ Qt属性系统详细介绍

文章分类

  • 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++中指向对象的常指针与指向常对象的指针详解
    • C语言代码中调用C++代码的方法示例
    • C++ 中try finally关键字详解
    • Linux C 时间函数应用
    • vector, list, map在遍历时删除符合条件的元素实现方法
    • 深度理解c++中的this指针

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

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