C++基础 -- 程序的组织结构
本博文由 西北工业大学MOOC 总结而来,以备以后回顾。
一、内部函数和外部函数
函数本质上是全局的,在多文件的程序中,在连接时会检查全局作用域内是否名字唯一,如果不是则出现链接错误。
1、内部函数
在函数定义前加上static修饰符,则函数称为内部函数,定义形式为:
static 返回类型 函数名(形参)
{
函数体
}
内部函数只能在包含它的文件中使用,而程序中的其他文件时无法使用的。
*用处:在函数逻辑上仅限定在一个文件中使用,其他文件不会用到。则在多人编写同一程序的软件中,连接检查时不会因为函数名的不唯一而报错。
2、内部函数
在函数定义前加上extern修饰符,则函数称为内部函数,定义形式为:
extern 返回类型 函数名(形参)
{
函数体
}
C++中所有的函数本质上都是外部函数,即默认为外部函数,所以可以省略extern。
二、头文件和工程文件
1、头文件
多文件结构的程序中,调用某个函数需要在每个文件中加入该函数的声明,且当函数声明修改时需要逐一修改,很难管理。
则使用头文件可以解决这个问题。其工作原理时通过将对应源文件中的外部函数的函数声明等信息写到一个文件中,称为头文件(有别于源文件)。而别的源文件只需要包含该头文件,就可以使用该头文件的所有函数声明等信息。
例:
定义用户自定义的头文件:
user.h
#ifndef _USER_H_ //检查该头文件名是否已经定义
#define _USER_H_ //没有定义,则定义"user.h"
double fsin (double x); //包含自定义函数的声明
#endif //结束检查,完成头文件定义
定义相应的源文件:
user.cpp
#include "user.h" //首先要包含相应的头文件,实现文件的连接
//编写自定义函数,如sin(x)
#include <cmath> //包含编写函数所需的头文件
double fsin(double x)
{
return sin(x*PI / 180.0);
}
在主函数中使用声明的函数:
main.cpp
#include <iostream>
using namespace std;
#include "user.h" //包含自定义的头文件
int main()
{
double x;
cout << "input x:" ;
cin >> x;
cout << "sin(x) = " << fsin(x) << endl; //直接调用头文件中声明的函数
return 0;
}
2、工程文件
多文件结构程序在编译时需要工程文件来管理,不同的编译器有不同的工程文件格式。