extern,可以在一個(gè)文件中引用另一個(gè)文件中定義的變量或者函數(shù),下面就結(jié)合具體的實(shí)例。
首先,引用同一個(gè)文件的變量,先寫一個(gè)簡(jiǎn)單的函數(shù)。
#include
int func();
int main()
{
func(); //1
printf("%d",num); //2
return 0;
}
int num = 3;
int func()
{
printf("%d\n",num);
}
這里一共定義了兩個(gè)函數(shù),一個(gè)主函數(shù)一個(gè)子函數(shù),子函數(shù)里直接打印的num的數(shù)據(jù),要打印數(shù)據(jù)首先要找到定義的數(shù)據(jù),這里定義的num是全局變量所以可以直接打印數(shù)據(jù)。
如果我們用extern進(jìn)行定義數(shù)據(jù)時(shí)需要采用全局變量定義,在其他地方使用,比如我們?cè)谥骱瘮?shù)定義了一個(gè)extern變量我們?cè)谄渌胤绞褂脮r(shí)需要線對(duì)變量進(jìn)行賦值操作,否則找不到相關(guān)的num。
#include
int func();
int main()
{
func(); //1
extern int num;
printf("%d",num); //2
return 0;
}
int num = 3;
int func()
{
printf("%d\n",num);
}
下面再說extern與const使用問題 。
如果我們要使用一個(gè)全局變量而且是不能改變的,那我們需要用const配合使用,代碼如下:
#include
int main()
{
extern const int num;
printf("%d",num);
return 0;
}
子函數(shù)
#include
const int num=5;
void func()
{
printf("fun in a.c");
}
這里我們?cè)谥骱瘮?shù)定義了一個(gè)extern const變量,需要在子函數(shù)的全局變量中定義const int num=5;這樣就可以使用。
extern除了引用另一個(gè)文件中的變量外,還可以引用另一個(gè)文件中的函數(shù),引用方法和引用變量相似。
mian.c
#include
int main()
{
extern void func();
func();
return 0;
}
common.c
#include
const int num=5;
void func()
{
printf("fun in a.c");
}
這里main函數(shù)中引用了b.c中的函數(shù)func。因?yàn)樗械暮瘮?shù)都是全局的,所以對(duì)函數(shù)的extern用法和對(duì)全局變量的修飾基本相同,需要注意的就是,需要指明返回值的類型和參數(shù)。
審核編輯:湯梓紅
-
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
365178 -
參數(shù)
+關(guān)注
關(guān)注
11文章
1867瀏覽量
33107 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64936
發(fā)布評(píng)論請(qǐng)先 登錄
錫膏的儲(chǔ)存及使用方法詳解

micro 關(guān)鍵字搜索全覆蓋商品,并通過 API 接口提供實(shí)時(shí)數(shù)據(jù)
單片機(jī)編程關(guān)鍵字之volatile
Aigtek:電壓放大器的實(shí)驗(yàn)技巧與使用方法介紹

C語(yǔ)言關(guān)鍵字分別發(fā)生在哪個(gè)階段
示波器高壓探頭使用方法
使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測(cè)

LangChain框架關(guān)鍵組件的使用方法

Keil中變量不被初始化方法

評(píng)論