C語言中extern詳細(xì)用法解析

小云
142
2023-08-16 12:36:51
欄目: 編程語言

在C語言中,extern是一個(gè)關(guān)鍵字,用于聲明外部變量和函數(shù)。

在C語言中,如果要在一個(gè)源文件中使用另一個(gè)源文件中定義的全局變量或函數(shù),就需要使用extern關(guān)鍵字來聲明這些變量或函數(shù)。extern關(guān)鍵字告訴編譯器,這些變量或函數(shù)是在其他源文件中定義的,而不是當(dāng)前源文件中定義的。

extern的用法分為兩種情況:

  1. 聲明全局變量:如果要在一個(gè)源文件中使用另一個(gè)源文件中定義的全局變量,就需要在使用的源文件中使用extern關(guān)鍵字來聲明這個(gè)全局變量。例如,如果在源文件A中定義了一個(gè)全局變量int a;,在源文件B中要使用這個(gè)全局變量,就需要在源文件B中使用extern關(guān)鍵字進(jìn)行聲明:extern int a;。這樣,編譯器就知道在鏈接時(shí)要從其他源文件中找到這個(gè)全局變量的定義。

  2. 聲明外部函數(shù):如果要在一個(gè)源文件中調(diào)用另一個(gè)源文件中定義的函數(shù),就需要在使用的源文件中使用extern關(guān)鍵字來聲明這個(gè)函數(shù)。例如,如果在源文件A中定義了一個(gè)函數(shù)void func();,在源文件B中要調(diào)用這個(gè)函數(shù),就需要在源文件B中使用extern關(guān)鍵字進(jìn)行聲明:extern void func();。這樣,編譯器就知道在鏈接時(shí)要從其他源文件中找到這個(gè)函數(shù)的定義。

需要注意的是,extern關(guān)鍵字只是一個(gè)聲明,不是定義。它只是告訴編譯器某個(gè)變量或函數(shù)在其他源文件中有定義,而不是在當(dāng)前源文件中定義。因此,extern關(guān)鍵字不能初始化變量,也不能給函數(shù)提供函數(shù)體。變量的定義和函數(shù)的定義必須在其他源文件中進(jìn)行。

總結(jié)來說,extern關(guān)鍵字的作用是告訴編譯器某個(gè)變量或函數(shù)在其他源文件中有定義,以便在編譯和鏈接時(shí)正確地引用這些變量或函數(shù)。

0