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

C++聲明extern變量和extern函數的用法

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

 一、 聲明extern變量

1、 如何聲明

在正常的變量聲明前增加extern關鍵字。

2、在何處聲明

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

3、在何處初始化

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

4、在何處調用

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

主文件一定不要引用test.cpp,否則出現警告: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)、調用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;
}
/*運行結果
a = 520 , b = 1314	*/

二、聲明extern函數

1、 如何聲明

在正常的函數聲明前增加extern關鍵字。

2、在何處聲明

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

3、在何處定義

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

4、在何處調用

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

主文件一定不要引用test.cpp,否則出現警告: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) 已經在 main.obj 中定義
1>test.obj : error LNK2005: "int a" (?a@@3HA) 已經在 main.obj 中定義
1>test.obj : error LNK2005: "int b" (?b@@3HA) 已經在 main.obj 中定義
1>C:\Users\pc\Desktop\extern\Project1\x64\Debug\Project1.exe : fatal error LNK1169: 找到一個或多個多重定義的符號
1>已完成生成項目“Project1.vcxproj”的操作 - 失敗。

5、舉例聲明extern變量

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

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

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

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

(3)、調用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);		//調用外部變量
	printf("add(a, b) = %d\n", add(a, b));	//調用外部函數
	return 0;
}
/*運行結果
a = 520 , b = 1314
add(a, b) = 1834	*/

三、總結

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

以上就是C++聲明extern變量和extern函數的用法的詳細內容,更多關于C++聲明extern變量和函數的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解C++中inline關鍵字的作用

    詳解C++中inline關鍵字的作用

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

    C語言實現圖書管理系統(tǒng)課程設計

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

    C語言驅動開發(fā)之內核文件的讀寫

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

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

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

    C++將字符串格式化的幾種方式總結

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

    C++ 網絡連通性檢測的實現方法

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

    C語言代碼 模塊化實現三子棋

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

    C++使用redis的實例詳解

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

    C++ 多態(tài)性虛函數和動態(tài)綁定學習筆記

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

    C++哈希應用的位圖和布隆過濾器

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

最新評論

洪雅县| 页游| 萝北县| 大足县| 诏安县| 兴安盟| 内黄县| 杭州市| 磐安县| 汝阳县| 文登市| 天峻县| 库伦旗| 西丰县| 奈曼旗| 青龙| 玛多县| 浙江省| 东丽区| 浑源县| 台湾省| 江华| 清涧县| 昌江| 灵川县| 丰台区| 临高县| 霞浦县| 吕梁市| 衡阳市| 漠河县| 旺苍县| 乌兰浩特市| 武威市| 申扎县| 柳林县| 浮梁县| 平江县| 福泉市| 同仁县| 深州市|