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

C++中的頭文件與Extern(外部函數(shù)調(diào)用)方式

 更新時(shí)間:2023年08月02日 09:49:15   作者:Kylee?Brady  
這篇文章主要介紹了C++中的頭文件與Extern(外部函數(shù)調(diào)用)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C++頭文件與Extern(外部函數(shù)調(diào)用)

⒈ 頭文件引用

⒉ extern調(diào)用同一個(gè)項(xiàng)目中的其他cpp文件中的函數(shù)

?【 main.cpp 】 

#include"day0915_3.h"
extern void func_1();
void func_2(){
	cout << "Hello" << endl;
}
int main(){
//	void (*x)();
//	x = func_1;
//	x();
	int a = 99;
	int *p = &a;
	cout << *p**p <<endl;
	cout << func_h() << endl;
	system("pause");
	func_1();
	return 0;
}

?【 day0915_3.h 】

#ifndef 條件編譯,防止頭文件被多次包含

#ifndef __DAY0915_3_H__
#define __DAY0915_3_H__
#include"iostream"
using namespace std;
int func_h();
#endif

?【 day0915_3.cpp 】

#include <iostream>
using namespace std;
int func_h(){
	return 999;
}
void func_1(){
	cout << "hello,world!" << endl;
}

通過(guò)extern和頭文件來(lái)引用函數(shù),有啥區(qū)別 ?

1、extern 應(yīng)用于全局變量,函數(shù)或模板聲明

說(shuō)明該符號(hào)具有外部鏈接 (external linkage) 屬性(這個(gè)符號(hào)在別處定義)。

2、變量可以聲明多次,但只能定義一次

在程序中變量可以聲明多次,但只能定義一次。

一般而言,定義就是聲明。

但 C++ 中由于 extern 的緣故,變量的聲明和定義是可以分開(kāi)的。

凡是沒(méi)有帶 extern 的聲明同時(shí)也都是定義。

而對(duì)函數(shù)而言,帶有{}是定義,否則是聲明。

int i; ? ? ? ? ? ? ? ?//聲明并定義i
int j = 1; ? ? ? ? ? ?//聲明并定義j
double max(double d1,double d2){} //函數(shù)定義
extern double max(double d1,double d2); ?//函數(shù)聲明

如果想聲明一個(gè)變量而非定義它,

就在變量名前添加關(guān)鍵字 extern,且不要顯式的初始化變量。

extern int i; ? ? ? ? ?//聲明i而非定義
extern int j = 2; ? ? ?//錯(cuò)誤,定義j而非聲明,會(huì)報(bào)錯(cuò),多重定義
int j; ? ? ? ? ? ? ? ? //錯(cuò)誤,重定義,注意這里的j是在全局范圍內(nèi)聲明

3、變量的聲明

當(dāng)鏈接器在一個(gè)全局變量聲明前看到 extern 關(guān)鍵字,

它會(huì)嘗試在其他文件中尋找這個(gè)變量的定義;

可以在頭文件中聲明一個(gè)變量,

在用的時(shí)候包含這個(gè)頭文件就相當(dāng)于聲明了這個(gè)變量。

4、使用 extern 和包含頭文件來(lái)引用函數(shù)有什么區(qū)別呢?

與 include 相比,extern 的引用方式比包含頭文件要更簡(jiǎn)潔:

extern 引用另一個(gè)文件的范圍小,想引用哪個(gè)函數(shù)就用 extern 聲明哪個(gè)函數(shù);

而 include 可以引用另一個(gè)文件的全部?jī)?nèi)容。

這樣做的一個(gè)明顯的好處是,

會(huì)提高程序編譯(預(yù)處理)效率,節(jié)省時(shí)間。

在大型 C++ 程序編譯過(guò)程中,這種差異是非常明顯的。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)堆排序順序存儲(chǔ)(升序)

    C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)堆排序順序存儲(chǔ)(升序)

    這篇文章主要介紹了C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)堆排序順序存儲(chǔ)(升序)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Opencv實(shí)現(xiàn)對(duì)象提取與測(cè)量

    Opencv實(shí)現(xiàn)對(duì)象提取與測(cè)量

    這篇文章主要為大家詳細(xì)介紹了基于Opencv實(shí)現(xiàn)對(duì)象提取與測(cè)量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 一篇文章詳解Qt中如何訪問(wèn)數(shù)據(jù)庫(kù)

    一篇文章詳解Qt中如何訪問(wèn)數(shù)據(jù)庫(kù)

    Qt是一個(gè)廣泛使用的跨平臺(tái)應(yīng)用程序框架,它提供了許多功能,包括數(shù)據(jù)庫(kù)訪問(wèn),這篇文章主要給大家介紹了關(guān)于Qt中如何訪問(wèn)數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • QT QML的元素布局的實(shí)現(xiàn)

    QT QML的元素布局的實(shí)現(xiàn)

    這篇文章主要介紹了QT QML的元素布局的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C++之虛函數(shù)與多態(tài)的實(shí)現(xiàn)原理分析

    C++之虛函數(shù)與多態(tài)的實(shí)現(xiàn)原理分析

    文章講解了C++多態(tài)原理,通過(guò)虛函數(shù)表(虛表)實(shí)現(xiàn)動(dòng)態(tài)綁定,探討了單繼承、多繼承及菱形繼承中的虛表結(jié)構(gòu),并指出虛函數(shù)不能是內(nèi)聯(lián)或靜態(tài)函數(shù),因需函數(shù)地址存儲(chǔ)于虛表
    2025-09-09
  • C++中平衡二叉搜索樹(shù)的模擬實(shí)現(xiàn)

    C++中平衡二叉搜索樹(shù)的模擬實(shí)現(xiàn)

    二叉搜索樹(shù)雖可以縮短查找的效率,但如果數(shù)據(jù)有序或接近有序二叉搜索樹(shù)將退化為單支樹(shù),查找元素相當(dāng)于在順序表中搜索元素,效率低下,所以本文給大家介紹了C++平衡二叉的搜索樹(shù)模擬實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-09-09
  • C++共享智能指針shared_ptr的實(shí)現(xiàn)

    C++共享智能指針shared_ptr的實(shí)現(xiàn)

    在C++中沒(méi)有垃圾回收機(jī)制,必須自己釋放分配的內(nèi)存,否則就會(huì)造成內(nèi)存泄露,解決這個(gè)問(wèn)題最有效的方法是使用智能指針,本文主要介紹了C++共享智能指針shared_ptr的實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • 簡(jiǎn)單實(shí)現(xiàn)C語(yǔ)言2048游戲

    簡(jiǎn)單實(shí)現(xiàn)C語(yǔ)言2048游戲

    這篇文章主要為大家詳細(xì)介紹了簡(jiǎn)單實(shí)現(xiàn)C語(yǔ)言2048游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • QT與MATLAB混合編程的詳細(xì)教程

    QT與MATLAB混合編程的詳細(xì)教程

    最近項(xiàng)目需要,matlab的一些算法需要工程用,因此需要直接轉(zhuǎn)成Qt能夠調(diào)用的形式,下面這篇文章主要給大家介紹了關(guān)于QT與MATLAB混合編程的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • C語(yǔ)言 操作符#與##使用方法詳解

    C語(yǔ)言 操作符#與##使用方法詳解

    在類函數(shù)宏中(帶參數(shù)的宏),#號(hào)作為一個(gè)預(yù)處理運(yùn)算符,可以把記號(hào)轉(zhuǎn)換成字符串。##相當(dāng)于連接符,它會(huì)將兩邊的內(nèi)容連接起來(lái),形成新的標(biāo)識(shí)符,下面請(qǐng)看詳細(xì)的教程
    2022-04-04

最新評(píng)論

霞浦县| 宁海县| 建德市| 唐河县| 易门县| 香河县| 夹江县| 二连浩特市| 民乐县| 澄迈县| 昌宁县| 博野县| 肥东县| 陈巴尔虎旗| 黑河市| 沙坪坝区| 芜湖县| 长汀县| 松溪县| 莒南县| 江口县| 福建省| 嘉黎县| 林芝县| 高要市| 新泰市| 嘉善县| 贡山| 溧水县| 七台河市| 秭归县| 宜宾县| 马鞍山市| 营山县| 贵阳市| 锡林浩特市| 岱山县| 商城县| 辽宁省| 罗甸县| 通榆县|