extern關鍵字可置於變數或者函式前,以表示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數或函式時,在其它模組中尋找其定義。另外,extern也可用來進行鏈結指定。
在介紹外部變數之前,先來看一下什麼是區域性變數。下面是乙個例子。
#include#define maxline 1000
int getline(char line,int maxline);
void copy(char to,char from);
main()
int getline(char s,int lim)
int getline(void)
void copy(void)
在該例子中,前幾行定義了main、getline與copy函式使用的幾個外部變數,宣告了各外部變數的型別,這樣編譯程式將為它們分配儲存單元。從語法角度看,外部變數的定義與區域性變數的定義是相同的,但由於它們位於各函式的外部,因此這些變數是外部變數。函式在使用外部變數之前,必須要知道變數的名字。要達到該目的,一種方式是在函式中使用extern型別的宣告。這種型別的宣告除了在前面加了乙個關鍵字extern外,其他方式與普通變數的宣告相同。
某些情況下可以省略extern宣告。在原始檔中,如果外部變數的定義出現在使用它的函式之前,那麼在那個函式中就沒有必要使用extern宣告。因此,main、getline及copy中的幾個extern宣告都是多餘的。在通常的做法中,所有外部變數的定義都放在原始檔的開始處,這樣就可以省略extern宣告。
如果程式包含在多個原始檔中,而某個變數在file1檔案中定義、在file2和file3檔案中使用,那麼在檔案file2與file3中就需要使用extern宣告來建立該變數與其定義之間的關係。通常把變數和函式的extern宣告放在乙個單獨的檔案中(習慣上稱之為標頭檔案),並在每個原始檔的開頭使用#include語句把所要用的標頭檔案包含進來。
某些情況下可以省略extern宣告。在原始檔中,如果外部變數的定義出現在使用它的函式之前,那麼在那個函式中就沒有必要使用extern宣告。因此,main、getline及copy中的幾個extern宣告都是多餘的。在通常的做法中,所有外部變數的定義都放在原始檔的開始處,這樣就可以省略extern宣告。
如果程式包含在多個原始檔中,而某個變數在file1檔案中定義、在file2和file3檔案中使用,那麼在檔案file2與file3中就需要使用extern宣告來建立該變數與其定義之間的關係。通常把變數和函式的extern宣告放在乙個單獨的檔案中(習慣上稱之為標頭檔案),並在每個原始檔的開頭使用#include語句把所要用的標頭檔案包含進來。
C C 中extern關鍵字
當extern與 c 一起連用時,如 extern c void fun int a,int b 這就告訴編譯器在編譯fun這個函式名時按著c的規則去翻譯相應的函式名而不是c 的,c 的規則在翻譯這個函式名時會把fun這個名字弄得面目全非,例如 fun abc isdnfsdf 不同編譯器採取的翻譯...
C C 中extern關鍵字詳解
一.extern修飾變數和函式 在c語言中,修飾符extern用在變數或者函式的宣告前,用來說明 此變數 函式是在別處定義的,要在此處引用 extern宣告不是定義,即不分配儲存空間。先來看一段 basic stdy.h ifndef basic stdy h define basic stdy h...
C C 的extern關鍵字
比如這是我的myextern.cpp檔案,只有一行 int ex 3 然後這是我的main.cpp include using namespace std intmain 如果我在main中加extern關鍵字 include using namespace std intmain 也就是說在沒有用...