C++中关于内部与外部函数
1》如果一個函數(shù)只能被本文件中其他函數(shù)所調(diào)用 ,它稱為內(nèi)部函數(shù),又稱為靜態(tài)(static)函數(shù)。
內(nèi)部函數(shù)首部的一般形式為:
static 類型標識符? 函數(shù)史(形參表)
static??? ?int???????????? func????? (int a, int b)
可以使內(nèi)部函數(shù)只局限于所在的文件內(nèi)。
如果在不同的文件中有同名的內(nèi)部函數(shù),互不干擾。這樣不同的人可以分別編寫不同的函數(shù),而不用擔(dān)心所用的函數(shù)是否會與其他文件中的函數(shù)重名。
2》如果在函數(shù)首部的最左端以關(guān)鍵字 extern(可以省略) ,則表示此函數(shù)是外部函數(shù),可供其他文件調(diào)用 。
外部函數(shù)首部的一般形式為:
extern??類型標識符? 函數(shù)史(形參表)
extern???? int?????????????? func??? (int a ,int b )
注意:如果在定義函數(shù)時省略extern,則默認為外部函數(shù)。
3-1》file1.cpp
#include<iostream>
using namespace std;
int main ()
{
?????? extern int max(int a,int b);//聲明在本函數(shù)將要調(diào)用在其他文件中定義的max函數(shù)
???? int a,b;
???? a=10;
???? b=20;
???? cout<<max(a,b)<<endl;
??? ?return 0;
}
3-2》file2.cpp
extern int max(int a,int b)
{
????? return a>b?a:b;
}
???
使用此例可知:使用extern 聲明就可以在一個文件中調(diào)用其他文件中的定義的外部函數(shù)了。
利用函數(shù)原型擴展函數(shù)作用域最常見的例子是#include指令。
例如,在程序中需要調(diào)用sin函數(shù),但是三角函數(shù)并不是由用戶在本文件中定義的,而是存放在數(shù)學(xué)函數(shù)庫中的。按以上的介紹,必須在本文件中寫出sin函數(shù)的原型,否則無法調(diào)用sin函數(shù)。
sin函數(shù)的原型是:
double sin(double x);
本來應(yīng)該由程序設(shè)計者在調(diào)用庫函數(shù)時先從手冊中查出所用的庫函數(shù)的原型,并在程序中一一寫出來,但是這樣顯然是麻煩而困難的。為了減少程序設(shè)計都的困難,在頭文件cmath中包括了所有的數(shù)學(xué)函數(shù)的原型和其他有關(guān)信息,用戶只須用以下#include指令:
#include<cmath>
即可。這時,在該文件中就能合法地調(diào)用 各數(shù)學(xué)庫函數(shù)了。
詳見:C++程序設(shè)計(第二版) P123-P125
總結(jié)
以上是生活随笔為你收集整理的C++中关于内部与外部函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android studio编译好的ap
- 下一篇: C++中参数传递的两种方式:传值与传址及