在C語言中,extern
是一個關鍵字,用于聲明外部變量和函數。
在C語言中,如果要在一個源文件中使用另一個源文件中定義的全局變量或函數,就需要使用extern
關鍵字來聲明這些變量或函數。extern
關鍵字告訴編譯器,這些變量或函數是在其他源文件中定義的,而不是當前源文件中定義的。
extern
的用法分為兩種情況:
聲明全局變量:如果要在一個源文件中使用另一個源文件中定義的全局變量,就需要在使用的源文件中使用extern
關鍵字來聲明這個全局變量。例如,如果在源文件A中定義了一個全局變量int a;
,在源文件B中要使用這個全局變量,就需要在源文件B中使用extern
關鍵字進行聲明:extern int a;
。這樣,編譯器就知道在鏈接時要從其他源文件中找到這個全局變量的定義。
聲明外部函數:如果要在一個源文件中調用另一個源文件中定義的函數,就需要在使用的源文件中使用extern
關鍵字來聲明這個函數。例如,如果在源文件A中定義了一個函數void func();
,在源文件B中要調用這個函數,就需要在源文件B中使用extern
關鍵字進行聲明:extern void func();
。這樣,編譯器就知道在鏈接時要從其他源文件中找到這個函數的定義。
需要注意的是,extern
關鍵字只是一個聲明,不是定義。它只是告訴編譯器某個變量或函數在其他源文件中有定義,而不是在當前源文件中定義。因此,extern
關鍵字不能初始化變量,也不能給函數提供函數體。變量的定義和函數的定義必須在其他源文件中進行。
總結來說,extern
關鍵字的作用是告訴編譯器某個變量或函數在其他源文件中有定義,以便在編譯和鏈接時正確地引用這些變量或函數。