天天看點

C語言外部函數與内部函數

函數的調用,一般是對同一個源檔案中的其他函數進行調用的,也可以對另外一個源檔案中的函數進行調用

C語言中,根據函數能否被其他源檔案調用,分為内部函數和外部函數

外部函數,可以被其他源檔案調用的函數

内部函數,隻在定義的檔案中有效

外部函數

開發大型項目,可能包含很多源檔案來分别實作,最終,再整合在一起,有時,一個源檔案中,需要調用其他源檔案中的函數

調用外部函數之前,需要在目前源檔案中定義外部函數

定義外部函數的方式,在函數的傳回值類型前面添加extern關鍵字

示例代碼

extern int add(int x,int y);

編譯器,通過extern關鍵字會知道,add()函數是定義在其他檔案中的外部函數

示例代碼

第一個源檔案
int add(int x,int y)
{
return x+y;
}
第二個源檔案
#include <stdio.h>
extern int add(int x,int y);
void main()
{        
printf("sum=%d\n",add(,));
}
           

運作結果

C語言外部函數與内部函數

C語言中

定義外部函數時,可以省略關鍵字extern

修改如下

int add(int x,int y);

由函數的傳回類型、函數名和參數清單組成,這類格式的代碼被稱為函數原型

當代碼中包含函數原型時,可能有兩種情況

1、程式員希望編譯器自動從其他檔案中,查找該函數的定義

2、程式員先定義未實作的空函數,然後,在其他檔案中具體實作

注意

聲明外部函數時,無論有沒有關鍵字extern,外部函數與原函數定義的傳回值類型、函數名稱和參數清單必須一緻

内部函數

外部函數,隻要聲明一個函數原型,就可以調用其他源檔案中的函數,但是,當多人開發時,可能出現函數重名的情況,不同源檔案中的同名函數會互相幹擾

此時,就需要一些特殊函數,隻在定義的檔案中有效,這類函數稱為内部函數

定義内部函數

在定義内部函數時,需要在函數的傳回值類型前面添加static關鍵字,也稱靜态函數

示例代碼

第一個檔案
#include<stdio.h>
void show()
{
printf("%s \n","first.c");
}
第二個檔案
#include<stdio.h>
static void show()
{
printf("%s \n","second.c");
}
void main()
{        
show();
}
           

運作結果

C語言外部函數與内部函數

如果,将第二個檔案中的static去

運作程式會報錯

繼續閱讀