函数调用从本质上采用的是栈的数据结构来实现的,而函数调用的方法也有很多,一般我们都会将要调用的函数和主函数都写在一个文件中,这样特别不利于函数的封装以及对于别人对于函数的调用,因而采用将函数和主函数分离的方法显得特别重要。下面介绍两种不同的分离方法。
(1)类似于文件共享的方式(不知道这样描述是否真确)
在主函数中进行调用函数的申明。例如:
/*------------------main.cpp-------------------*/
#include <iostream>
using namespace std;
int acompare(int,int);
int abs1(int);
int main()
{
cout<<abs1(-4)<<endl;
cout<<acompare(3,-4)<<endl;
return 0;
}
/*------------------abs1.cpp-------------------*/
int abs1(int a)
{
return (a>=0)? a:-a;
}
/*------------------acompare.cpp-------------------*/
int abs1(int); //注意要对abs1进行申明,因为后面会调用到这个函数
int acompare(int a,int b)
{
return abs1(a)-abs1(b);
}
(2)采用头文件的方法,在头文件中对函数进行申明。例如:
/*------------------main.cpp-------------------*/
#include "func1.h"
#include "func2.h"
#include <iostream>
using namespace std;
int main()
{
cout<<abs1(-4)<<endl;
cout<<acompare(3,-4)<<endl;
}
/*------------------func1.cpp-------------------*/
#include "func1.h"
int abs1(int a)
{
return (a>=0)? a:-a;
}
/*------------------func2.cpp-------------------*/
#include "func2.h"
int acompare(int a,int b)
{
return abs1(a)-abs1(b);
}
/*------------------func1.h-------------------*/
#ifndef _FUNC1_
#define _FUNC1_
int abs1(int);
#endif
/*------------------func1.h-------------------*/
#ifndef _FUNC2_
#define _FUNC2_
#include "func1.h"//注意要添加上func1的头文件
int acompare(int ,int);
#endif
以上只是本人在学习c++中的一些体会,大家可以借鉴一下,对于更好的了解函数调用,头文件的知识有进一步的了解