最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++聲明extern變量和extern函數(shù)的用法

 更新時間:2024年11月05日 10:33:24   作者:wenchm  
extern關(guān)鍵字可以用來聲明變量和函數(shù)作為外部變量或者外部函數(shù)供其它文件使用,所以本文給大家介紹了C++聲明extern變量和extern函數(shù)的用法,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下

 一、 聲明extern變量

1、 如何聲明

在正常的變量聲明前增加extern關(guān)鍵字。

2、在何處聲明

在頭文件中聲明extern變量。比如:test.h。在變量聲明的時候不要賦值。

3、在何處初始化

在與頭文件名稱相同的.cpp文件中定義,比如:test.cpp,test.cpp中必須引用test.h;

4、在何處調(diào)用

在主文件中調(diào)用,比如:main.cpp,主文件可以不與test.h同名,但必須必須引用test.h。

主文件一定不要引用test.cpp,否則出現(xiàn)警告:LNK2005、LNK1169;

5、舉例聲明extern變量

(1)、聲明extern變量的test.h文件

/*extern*/
//聲明外部變量
extern int a;
extern int b;

(2)、初始化extern變量的test.cpp文件

/*extern*/
#include "test.h"
 
//定義外部變量、外部變量初始化
int a = 520;
int b = 1314;

(3)、調(diào)用extern變量的main.cpp文件

/*extern*/
//使用外部變量
#include <stdio.h>
#include "test.h"
/*#include"test.cpp"*/	//不可以這樣引用,否則警告LNK2005、LNK1169
 
int main(void)
{
	printf("a = %d , b = %d\n", a, b);
 
	return 0;
}
/*運(yùn)行結(jié)果
a = 520 , b = 1314	*/

二、聲明extern函數(shù)

1、 如何聲明

在正常的函數(shù)聲明前增加extern關(guān)鍵字。

2、在何處聲明

在頭文件中聲明extern函數(shù)。比如:test.h,聲明extern函數(shù)不要書寫函數(shù)體的實(shí)現(xiàn)方法。

3、在何處定義

在與頭文件名稱相同的.cpp文件中定義和實(shí)現(xiàn)函數(shù)體,比如:test.cpp,test.cpp中必須引用test.h;

4、在何處調(diào)用

在主文件中調(diào)用,比如:main.cpp,主文件可以不與test.h同名,但必須必須引用test.h。

主文件一定不要引用test.cpp,否則出現(xiàn)警告:LNK2005、LNK1169;比如:

已啟動生成...
1>------ 已啟動生成: 項目: Project1, 配置: Debug x64 ------
1>main.cpp
1>LINK : 沒有找到 C:\Users\pc\Desktop\extern\Project1\x64\Debug\Project1.exe 或上一個增量鏈接沒有生成它;正在執(zhí)行完全鏈接
1>test.obj : error LNK2005: "int __cdecl add(int,int)" (?add@@YAHHH@Z) 已經(jīng)在 main.obj 中定義
1>test.obj : error LNK2005: "int a" (?a@@3HA) 已經(jīng)在 main.obj 中定義
1>test.obj : error LNK2005: "int b" (?b@@3HA) 已經(jīng)在 main.obj 中定義
1>C:\Users\pc\Desktop\extern\Project1\x64\Debug\Project1.exe : fatal error LNK1169: 找到一個或多個多重定義的符號
1>已完成生成項目“Project1.vcxproj”的操作 - 失敗。

5、舉例聲明extern變量

(1)、聲明extern函數(shù)的test.h文件

/*extern*/
//聲明外部變量
extern int a;
extern int b;
//聲明外部函數(shù)
extern int add(int a, int b);	//extern關(guān)鍵字可要可不要

(2)、定義extern函數(shù)的test.cpp文件

/*extern*/
#include "test.h"
 
//定義外部變量、外部變量初始化
int a = 520;
int b = 1314;
 
//定義外部函數(shù)。實(shí)現(xiàn)外部函數(shù)的方法
int add(int a, int b)
{
	return a + b;
};

(3)、調(diào)用extern函數(shù)的main.cpp文件

/*extern*/
//使用外部變量
#include <stdio.h>
#include "test.h"
/*#include"test.cpp"*/	//不可以這樣引用,否則警告LNK2005、LNK1169
 
int main(void)
{
	printf("a = %d , b = %d\n", a, b);		//調(diào)用外部變量
	printf("add(a, b) = %d\n", add(a, b));	//調(diào)用外部函數(shù)
	return 0;
}
/*運(yùn)行結(jié)果
a = 520 , b = 1314
add(a, b) = 1834	*/

三、總結(jié)

  • 要養(yǎng)成正規(guī)的編程習(xí)慣,變量、函數(shù)、結(jié)構(gòu)體、類的聲明要放在.h文件中,比如test.h;結(jié)構(gòu)體和類體的實(shí)現(xiàn)可以放在test.h文件中,但不要初始化。聲明外部變量、聲明外部函數(shù),等時必須使用extern關(guān)鍵字。
  • 把變量的初始化、函數(shù)方法的實(shí)現(xiàn)、結(jié)構(gòu)體的實(shí)現(xiàn)、類體的實(shí)現(xiàn)放在另一個.cpp文件中,這個.cpp文件默認(rèn)的要與.h文件同名,比如test.cpp。同時在test.cpp要引用test.h文件。聲明外部變量、聲明外部函數(shù)時必須使用extern關(guān)鍵字。初始化外部變量、定義外部函數(shù),等的實(shí)現(xiàn)方法時不要重復(fù)使用extern關(guān)鍵字。
  • main.cpp負(fù)責(zé)變量的引用、函數(shù)的調(diào)用、結(jié)構(gòu)體變量定義和結(jié)構(gòu)體成員的調(diào)用,類對象的定義和類成員的調(diào)用;調(diào)用外部變量、外部函數(shù)時不需要使用extern關(guān)鍵字。main.cpp要引用test.h文件,一定不要引用test.cpp文件。

以上就是C++聲明extern變量和extern函數(shù)的用法的詳細(xì)內(nèi)容,更多關(guān)于C++聲明extern變量和函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解C++中inline關(guān)鍵字的作用

    詳解C++中inline關(guān)鍵字的作用

    這篇文章主要為大家介紹了C++中的inline關(guān)鍵字,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • C語言實(shí)現(xiàn)圖書管理系統(tǒng)課程設(shè)計

    C語言實(shí)現(xiàn)圖書管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)圖書管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C語言驅(qū)動開發(fā)之內(nèi)核文件的讀寫

    C語言驅(qū)動開發(fā)之內(nèi)核文件的讀寫

    這篇文章主要為大家詳細(xì)介紹了C語言驅(qū)動開發(fā)中內(nèi)核文件的讀寫的系列函數(shù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • C語言中輸入輸出流與緩沖區(qū)的深入講解

    C語言中輸入輸出流與緩沖區(qū)的深入講解

    一般情況下,由鍵盤輸入的字符并沒有直接送入程序,而是被存儲在一個緩沖區(qū)當(dāng)中。下面這篇文章主要給大家介紹了關(guān)于C語言中輸入輸出流與緩沖區(qū)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • C++將字符串格式化的幾種方式總結(jié)

    C++將字符串格式化的幾種方式總結(jié)

    這篇文章主要介紹了C++將字符串格式化的幾種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C++ 網(wǎng)絡(luò)連通性檢測的實(shí)現(xiàn)方法

    C++ 網(wǎng)絡(luò)連通性檢測的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++ 網(wǎng)絡(luò)連通性檢測的實(shí)現(xiàn)方法的相關(guān)資料,這里提供實(shí)例幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • C語言代碼 模塊化實(shí)現(xiàn)三子棋

    C語言代碼 模塊化實(shí)現(xiàn)三子棋

    這篇文章主要為大家詳細(xì)介紹了C語言 模塊化實(shí)現(xiàn)三子棋程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++使用redis的實(shí)例詳解

    C++使用redis的實(shí)例詳解

    這篇文章主要介紹了C++使用redis的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • C++ 多態(tài)性虛函數(shù)和動態(tài)綁定學(xué)習(xí)筆記

    C++ 多態(tài)性虛函數(shù)和動態(tài)綁定學(xué)習(xí)筆記

    這篇文章主要為大家介紹了C++ 多態(tài)性虛函數(shù)和動態(tài)綁定學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • C++哈希應(yīng)用的位圖和布隆過濾器

    C++哈希應(yīng)用的位圖和布隆過濾器

    這篇文章主要介紹了C++哈希應(yīng)用的位圖和布隆過濾器的相關(guān)資料,文章內(nèi)容多以列舉試題的方式講解,感興趣的朋友可以參考下面文章內(nèi)容
    2021-09-09

最新評論

合肥市| 藁城市| 简阳市| 平武县| 武夷山市| 平安县| 泰顺县| 合作市| 靖边县| 新巴尔虎右旗| 东阳市| 武威市| 武鸣县| 鸡泽县| 石台县| 南江县| 乃东县| 菏泽市| 邛崃市| 阜新| 积石山| 卓尼县| 大悟县| 济南市| 家居| 嵊州市| 咸丰县| 称多县| 舒城县| 中江县| 东方市| 湖北省| 安化县| 博湖县| 怀仁县| 建平县| 阳曲县| 廊坊市| 疏附县| 钟山县| 北海市|