欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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;
}
/*運行結(jié)果
a = 520 , b = 1314	*/

二、聲明extern函數(shù)

1、 如何聲明

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

2、在何處聲明

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

3、在何處定義

在與頭文件名稱相同的.cpp文件中定義和實現(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ù)。實現(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;
}
/*運行結(jié)果
a = 520 , b = 1314
add(a, b) = 1834	*/

三、總結(jié)

  • 要養(yǎng)成正規(guī)的編程習(xí)慣,變量、函數(shù)、結(jié)構(gòu)體、類的聲明要放在.h文件中,比如test.h;結(jié)構(gòu)體和類體的實現(xiàn)可以放在test.h文件中,但不要初始化。聲明外部變量、聲明外部函數(shù),等時必須使用extern關(guān)鍵字。
  • 把變量的初始化、函數(shù)方法的實現(xiàn)、結(jié)構(gòu)體的實現(xiàn)、類體的實現(xiàn)放在另一個.cpp文件中,這個.cpp文件默認(rèn)的要與.h文件同名,比如test.cpp。同時在test.cpp要引用test.h文件。聲明外部變量、聲明外部函數(shù)時必須使用extern關(guān)鍵字。初始化外部變量、定義外部函數(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++實現(xiàn)馬踏棋盤(騎士周游)

    C++實現(xiàn)馬踏棋盤(騎士周游)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)馬踏棋盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C語言之通訊錄的模擬實現(xiàn)代碼

    C語言之通訊錄的模擬實現(xiàn)代碼

    這篇文章主要介紹了C語言之通訊錄的模擬實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C++實現(xiàn)哈希桶的詳細(xì)教程

    C++實現(xiàn)哈希桶的詳細(xì)教程

    這篇文章主要介紹了C++實現(xiàn)哈希桶的詳細(xì)教程,哈希的底層是一個vector的數(shù)組,數(shù)組中的每個節(jié)點都有一個pair類型的數(shù)據(jù),文中通過代碼示例和圖文講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-06-06
  • C語言中棧和隊列實現(xiàn)表達(dá)式求值的實例

    C語言中棧和隊列實現(xiàn)表達(dá)式求值的實例

    這篇文章主要介紹了C語言中棧和隊列實現(xiàn)表達(dá)式求值的實例的相關(guān)資料,這里主要是對數(shù)據(jù)結(jié)構(gòu)中棧和隊列的理解和應(yīng)用,需要的朋友可以參考下
    2017-08-08
  • C語言的循環(huán)小練習(xí)詳解

    C語言的循環(huán)小練習(xí)詳解

    這篇文章主要為大家介紹了C語言的循環(huán)小練習(xí),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C++中try throw catch異常處理的用法示例

    C++中try throw catch異常處理的用法示例

    這篇文章主要給大家介紹了關(guān)于C++中try throw catch異常處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • C++找出字符串中出現(xiàn)最多的字符和次數(shù),時間復(fù)雜度小于O(n^2)

    C++找出字符串中出現(xiàn)最多的字符和次數(shù),時間復(fù)雜度小于O(n^2)

    今天小編就為大家分享一篇關(guān)于C++找出字符串中出現(xiàn)最多的字符和次數(shù),時間復(fù)雜度小于O(n^2),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言位運算和sizeof運算符詳解

    C語言位運算和sizeof運算符詳解

    這篇文章主要介紹了C語言位運算和sizeof運算符詳解的相關(guān)資料,這里提供了詳細(xì)的知識要點,并附簡單代碼示例,需要的朋友可以參考下
    2016-11-11
  • C++之vector內(nèi)存釋放原理

    C++之vector內(nèi)存釋放原理

    這篇文章主要介紹了C++之vector內(nèi)存釋放原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++ 使用模板實現(xiàn)一個List的實例

    C++ 使用模板實現(xiàn)一個List的實例

    這篇文章主要介紹了 C++ 使用模板實現(xiàn)一個List的實例的相關(guān)資料,需要的朋友可以參考下
    2017-05-05

最新評論