亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

⒈ 頭文件引用

⒉ extern調用同一個項目中的其他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;
}

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

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

說明該符號具有外部鏈接 (external linkage) 屬性(這個符號在別處定義)。

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

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

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

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

凡是沒有帶 extern 的聲明同時也都是定義。

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

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

如果想聲明一個變量而非定義它,

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

extern int i; ? ? ? ? ?//聲明i而非定義
extern int j = 2; ? ? ?//錯誤,定義j而非聲明,會報錯,多重定義
int j; ? ? ? ? ? ? ? ? //錯誤,重定義,注意這里的j是在全局范圍內聲明

3、變量的聲明

當鏈接器在一個全局變量聲明前看到 extern 關鍵字,

它會嘗試在其他文件中尋找這個變量的定義;

可以在頭文件中聲明一個變量,

在用的時候包含這個頭文件就相當于聲明了這個變量。

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

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

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

而 include 可以引用另一個文件的全部內容。

這樣做的一個明顯的好處是,

會提高程序編譯(預處理)效率,節(jié)省時間。

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

總結

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

相關文章

  • C語言?棧與數(shù)組的實現(xiàn)詳解

    C語言?棧與數(shù)組的實現(xiàn)詳解

    棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入?;驂簵?,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素
    2022-04-04
  • C++基于EasyX庫實現(xiàn)拼圖小游戲

    C++基于EasyX庫實現(xiàn)拼圖小游戲

    這篇文章主要為大家詳細介紹了C++基于EasyX庫實現(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言實現(xiàn)數(shù)獨輔助器(附源碼)

    C語言實現(xiàn)數(shù)獨輔助器(附源碼)

    數(shù)獨是源自瑞士的一種數(shù)學游戲。是一種運用紙、筆進行演算的邏輯游戲。本文將利用C語言制作一個數(shù)獨輔助器,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-01-01
  • C++使用泛型導致的膨脹問題

    C++使用泛型導致的膨脹問題

    這篇文章主要介紹了C++使用泛型導致的膨脹,智能家居主機的嵌入式平臺上使用C++進行開發(fā)。FLASH存儲空間有限,這是必須要考慮的因素,一定要重視,下面我們一起進入文章看看詳細內容
    2021-11-11
  • C語言大小端字節(jié)序存儲模式深入解讀

    C語言大小端字節(jié)序存儲模式深入解讀

    我們知道,當編譯器執(zhí)行 “創(chuàng)建變量” 這一代碼時,會在內存中開辟空間相應的空間來存儲變量值。而對于整型變量而言,變量值又是以二進制補碼的形式存放的
    2022-09-09
  • VC6.0常見編譯錯誤提示附解決方法

    VC6.0常見編譯錯誤提示附解決方法

    這篇文章主要介紹了VC++6.0編譯過程中常遇到的一些錯誤提示并給出了錯誤原因與分析,需要的朋友尅參考下
    2013-07-07
  • C語言之malloc動態(tài)分配內存和free釋放

    C語言之malloc動態(tài)分配內存和free釋放

    這篇文章主要介紹了C語言之malloc動態(tài)分配內存和free釋放,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C語言數(shù)據(jù)結構二叉樹先序、中序、后序及層次四種遍歷

    C語言數(shù)據(jù)結構二叉樹先序、中序、后序及層次四種遍歷

    這篇文章主要介紹了C語言數(shù)據(jù)結構二叉樹先序、中序、后序及層次四種遍歷方式,具有一定的知識性參考價值,需要的小伙伴可以先看一下
    2022-02-02
  • APUE筆記之:進程環(huán)境詳解

    APUE筆記之:進程環(huán)境詳解

    本篇文章是對APUE 進程環(huán)境詳解進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • socket編程的詳細講解

    socket編程的詳細講解

    本文詳細講解了socket編程,它是網(wǎng)絡中經(jīng)常使用的一門技術,該文章通過大量的代碼來解釋,大家可以參考參考
    2021-08-08

最新評論