亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C/C++ 中extern關鍵字詳解

2020-01-26 14:06:35
字體:
來源:轉載
供稿:網友

C/C++ 中extern關鍵字詳解

在C/C++編程過程中,經常會進行變量和函數的聲明和定義,各個模塊間共用同一個全局變量時,此時extern就派上用場了。

定義

extern可以置于變量或者函數前,以標示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義,不需要分配內存,直接使用。

推薦:在.h中聲明,因為在頭文件定義的話,其他模塊include此頭文件,就會報重復定義錯誤

實驗結論

1、在.h中聲明  extern int g_a;  在.c中定義 int g_a=1; 在兩個其他文件中引入.h  g_a就是唯一的2、在.h中聲明  int g_a;  在.c中定義 int g_a=1; 在兩個其他文件中引入.h  g_a就是唯一的3、在.h中定義 int g_a =1;   -----報錯 在兩個其他文件中引入.h  g_a就是重復定義了 

實驗內容

有 testa.h、test.c、main.c 三個文件

實驗1:在.h中聲明   extern int g_a;   在.c中定義 int g_a=1;

testa.h文件#ifndef TESTAH#define TESTAH extern int g_a;#endif
testa.c文件#include "../include/testa.h"int g_a = 1;void setA(int m){ g_a = m;}int getA(){ return g_a;}
main.c文件#include<stdio.h>#include "../include/testa.h"int main(){ setA(5); printf("g_a:%d/n",g_a); return 0;}

    編譯:gcc  testa.c main.c    輸出:g_a:5

實驗2:在.h中聲明   int g_a;   在.c中定義 int g_a=1;

    只是將實驗1中的testa.h的extern關鍵字去掉

    編譯:gcc  testa.c main.c    輸出:g_a:5

實驗3: 在.h中定義  int g_a =1;

testa.h文件

#ifndef TESTAH#define TESTAH int g_a = 1;#endif

testa.c文件

#include "../include/testa.h"void setA(int m){ g_a = m;}int getA(){ return g_a;}

main.c文件

#include<stdio.h>#include "../include/testa.h"int main(){ setA(5); printf("g_a:%d/n",g_a); return 0;}

編譯報錯:

/tmp/ccja3SvL.o:(.data+0x0): multiple definition of `g_a'/tmp/cczZlYh9.o:(.data+0x0): first defined herecollect2: error: ld returned 1 exit status

總結

     1、變量和函數的定義最好不要在頭文件中定義,因為當此頭文件在其他文件中#include進去后,編譯器會認為變量定義了兩次,報錯。

    2、變量和函數的聲明放在頭文件中(實驗發現前面有沒有extern關鍵字修飾都可以),這樣可以讓其他模塊使用此變量和函數。

        在其他引入此頭文件的.c或者.cpp文件中,也可以通過加入extern 變量或函數聲明,告訴編譯器是外部引用。也可以不在聲明,直接使用。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美影院久久久| 97视频免费观看| 久久精品中文字幕免费mv| 最近2019中文字幕一页二页| 在线a欧美视频| 欧美成人h版在线观看| 国产在线观看精品| 亚洲系列中文字幕| 成人乱色短篇合集| 国产精品第二页| 欧美日韩成人在线视频| 最近2019中文字幕在线高清| 日韩在线激情视频| 国产精品三级久久久久久电影| 538国产精品视频一区二区| 欧美精品手机在线| 性金发美女69hd大尺寸| 亚洲精品国产精品国产自| 欧美多人爱爱视频网站| 久久久久久午夜| 91成人天堂久久成人| 国产精品96久久久久久又黄又硬| www.久久色.com| 欧美专区在线视频| 欧美激情精品久久久| 国产一区视频在线播放| 最新91在线视频| 成人黄色影片在线| 亚洲www在线观看| 久久成人免费视频| 日韩资源在线观看| 欧美性69xxxx肥| 精品亚洲一区二区三区在线播放| 中文字幕免费精品一区| 精品亚洲男同gayvideo网站| 91午夜理伦私人影院| 亚洲女性裸体视频| 欧美香蕉大胸在线视频观看| 日韩欧美第一页| 国产免费一区二区三区在线观看| 国产欧美日韩免费| 中文字幕无线精品亚洲乱码一区| 国产精品ⅴa在线观看h| 精品欧美一区二区三区| 7777kkkk成人观看| 久久久久久尹人网香蕉| 亚洲最大成人网色| 欧美大全免费观看电视剧大泉洋| 国产视频亚洲视频| 欧美精品电影免费在线观看| 亚洲精品一区中文字幕乱码| 久久综合久久八八| 精品自拍视频在线观看| 精品少妇v888av| 亚洲欧洲高清在线| 亚洲黄色www网站| 亚洲激情电影中文字幕| 亚洲人成网站777色婷婷| 国产精品精品久久久| 国产精品久久久久久影视| 中文字幕少妇一区二区三区| 欧美成人一区在线| 一本大道亚洲视频| 欧美三级免费观看| 91精品国产91久久久久久最新| 精品久久久久久中文字幕| 国产精品99久久久久久白浆小说| 国产一区二区三区在线看| 欧洲亚洲免费在线| 欧美激情a在线| 一本大道亚洲视频| 一区二区三区天堂av| 亚洲精品动漫100p| 国产男女猛烈无遮挡91| 国产成人精品免费久久久久| 久久这里有精品视频| 亚洲视频一区二区三区| 日韩在线观看视频免费| 久久久精品电影| 国产精品96久久久久久又黄又硬| 亚洲国产精彩中文乱码av在线播放| 国产啪精品视频| 国产69久久精品成人| 色哟哟亚洲精品一区二区| 欧美性在线观看| 国产亚洲激情视频在线| 亚洲免费一级电影| 欧美中文在线视频| 久久久91精品| 欧美在线视频网| 国产精品国产福利国产秒拍| 国产精品jvid在线观看蜜臀| 日韩欧美一区二区在线| 欧美成人免费全部| 亚洲精选在线观看| 欧美激情免费在线| 91视频国产精品| 亚洲精品日韩欧美| 色婷婷综合成人| 成人激情在线观看| 欧美成人精品一区二区三区| 色综合老司机第九色激情| 国产91成人video| 久久人人爽亚洲精品天堂| 欧美激情一区二区三区在线视频观看| 国产精品美女久久久久久免费| 国产精品精品一区二区三区午夜版| 精品国产网站地址| 国产精品永久免费视频| 国产精品国模在线| 欧美在线亚洲一区| 欧美激情一区二区三区成人| 欧美性高潮床叫视频| 国产成人精品日本亚洲| 亚洲精品国产精品国产自| 国产一区二区三区在线观看网站| 亚洲人成在线电影| 久99九色视频在线观看| 亚洲第一福利在线观看| 69久久夜色精品国产69| 亚洲人成在线观看网站高清| 日韩欧美高清在线视频| 一区二区欧美久久| 亚洲一区二区久久| 欧美激情图片区| 国产精品日本精品| 亚洲国产第一页| 国产欧美日韩中文字幕在线| 青青久久aⅴ北条麻妃| 日韩av一卡二卡| 中文字幕欧美日韩| 日韩av电影在线播放| 日韩av网站电影| 久久视频国产精品免费视频在线| 国产精品69久久久久| 亚洲在线www| 亚洲精品suv精品一区二区| 亚洲最大福利视频| 国产精品h片在线播放| 国产精品你懂得| 国产成人中文字幕| 亚洲欧美国产高清va在线播| 国产91网红主播在线观看| 亚洲国产三级网| 在线看欧美日韩| 奇米四色中文综合久久| 国产欧美日韩精品丝袜高跟鞋| 国产欧美一区二区三区在线| 中文字幕精品视频| 茄子视频成人在线| 久久视频国产精品免费视频在线| 久久精品国产v日韩v亚洲| 国产成人精品久久二区二区| 亚洲激情电影中文字幕| 欧美一级电影在线| 国语自产精品视频在线看抢先版图片| 精品女同一区二区三区在线播放| 欧美限制级电影在线观看| 久久国产色av| 欧美精品激情在线| 97视频在线观看视频免费视频| 亚洲精品国精品久久99热| 精品久久久久久国产91| 欧洲一区二区视频|