電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 63|回復(fù): 0
收起左側(cè)

c語言中extern的用法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 2024-10-21 16:10:00 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
extern關(guān)鍵字是C語言中的一個(gè)修飾符,用于聲明全局變量和函數(shù)的引用。它用于告訴編譯器,某個(gè)全局變量或函數(shù)的定義位于其他文件中。以下是extern關(guān)鍵字的基本用法:
全局變量聲明:在文件中使用extern關(guān)鍵字聲明一個(gè)全局變量,即使該變量在其他文件中定義。
函數(shù)聲明:在文件中使用extern關(guān)鍵字聲明一個(gè)函數(shù),即使該函數(shù)在其他文件中定義。
[/ol]實(shí)例解析: 假設(shè)我們有一個(gè)全局變量和一個(gè)函數(shù),它們分別定義在兩個(gè)不同的文件中。
--------------------------------------------------------------------
// 文件1,file1.c
#include stdio.h>

// 全局變量的定義
int global_var = 10;

// 全局函數(shù)的定義
void global_func()
{
printf("全局函數(shù)被調(diào)用
");
}
[/ol]--------------------------------------------------------------------
// 文件2,file2.c
#include stdio.h>

// 使用extern關(guān)鍵字聲明全局變量
extern int global_var;

// 使用extern關(guān)鍵字聲明全局函數(shù)
extern void global_func();

int main()
{
printf("全局變量值: %d
", global_var);
  global_func();
  return 0;
}
[/ol]-------------------------------------------------------------------
在這個(gè)例子中,我們定義了一個(gè)全局變量global_var和一個(gè)全局函數(shù)global_func,它們分別定義在file1.c和file2.c文件中。在file2.c文件中,我們使用extern關(guān)鍵字聲明了這兩個(gè)全局變量和函數(shù)。
實(shí)際使用中也常遇到下面這種情況:
-----------------------------------------------------------------------------------------------
在 file1.c 中定義
int myVar = 20; // 定義變量
在 file1.h 中使用 extern 聲明
extern int myVar; // 聲明變量,表示它在其他地方定義
----------------------------------------------------------------
  • int myVar = 20;
  • 在 file1.c 中,您實(shí)際上定義并初始化了 myVar,這會(huì)分配內(nèi)存并賦值。
  • extern int myVar;
  • 在 file1.h 中,這只是一個(gè)聲明,表示 myVar 在其他地方(此處指 file1.c)定義。這樣做的目的是為了讓其他文件可以通過包含 file1.h 來訪問 myVar。

    通過將變量和函數(shù)的聲明放在頭文件中,而將實(shí)現(xiàn)放在源文件中,您可以將代碼分成邏輯模塊。每個(gè)模塊可以獨(dú)立開發(fā)和測(cè)試。頭文件提供了一個(gè)清晰的接口,使得其他模塊可以知道如何與該模塊交互,而無需了解內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。
    在 C 中,變量和函數(shù)只能被定義一次。如果在多個(gè)源文件中定義同一個(gè)變量,編譯時(shí)會(huì)出現(xiàn)鏈接錯(cuò)誤。使用 extern 聲明可以在頭文件中聲明變量,從而在多個(gè)源文件中引用,而不進(jìn)行重復(fù)定義。
    這樣可以將變量的定義集中在一個(gè)源文件中,減少了因重復(fù)定義而導(dǎo)致的錯(cuò)誤,便于管理。
  • 回復(fù)

    使用道具

    發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表