extern 變數 函式

2021-08-01 19:29:45 字數 631 閱讀 9986

一 extern作用

宣告函式或者全域性變數的作用範圍,其宣告的函式和變數可以在本模組和其他模組使用(注意是宣告不是定義)。例如,模組b(編譯單元)引用模組a定義的全域性變數或函式,只要包含a模組的標頭檔案即可,在編譯階段,模組b雖然找不到該函式值或變數,但它會在連線是從模組a生成的目標**中找到此函式。

二 例子

/*main.c*/

#include #include "main.h"

int main()

/*foo.c*/

#include #include "main.h"

int main()

/*main.h*/

extern int a;

extern void foo(void);

$ gcc main.c foo.c -o main

$ ./main 

main: a = 1

foo: a = 2

三 運用

在修改核心模組**時,新增加的函式,需要在對應的.h檔案用extern宣告

四 參考文章

外部變數與extern

b 外部變數 b 顧名思義就是定義在函式之外的變數。它只能定義一次,定義後編譯程式將為它分配儲存單元。如果需要訪問外部變數,則必須宣告相應的外部變數,宣告時可以用 b extern b 語句 b 顯示宣告 b 也可以通過上下文來 b 隱式宣告 b 比如 int max 5 main 這是顯示宣告。當...

extern 函式詳解

extern置於變數和函式前,目的是告訴編譯器,遇到此變數或者函式時,當作宣告來對待,去其他模組中尋找定義。1 extern置於變數前 例如 在乙個aa.c檔案中定義了乙個陣列 char str 6 如果想在另外乙個bb.c檔案中引用這個陣列,方法有兩種 1 建立乙個aa.h檔案,然後將 exter...

extern宣告跨檔案變數

file dog.h class dog int leg static int num1 定義靜態成員變數 file dog.cpp include dog.h int num2 static int num3 定義靜態成員變數,num3僅限於本檔案使用 file main.cpp include ...