可能重複:
Effects of the `extern` keyword on C functions混亂關於與函數定義的extern用C
好了,現在幾個小時我已經讀了很多關於extern關鍵字是什麼意思。還有最後一件事情讓我無法找到任何有關的信息。 據我所知extern
關鍵字基本上告訴編譯器,變量或函數只是一個聲明,並且它是在某個地方定義的,所以它不必擔心,鏈接器會處理它。
而且打字時由編譯器(我用gcc 4.2.1)所產生的警告:
extern int var = 10;
支持這一點。用extern
這應該只是一個聲明,所以它是不正確的。
然而,這是混淆了我的事情是打字時沒有警告或任何東西:
extern int func() {return 5;}
這是一個定義,它應該產生同樣的警告,但事實並非如此。對此的唯一解釋是在此處找到的是該定義覆蓋了extern
關鍵字。但是,遵循這個邏輯,爲什麼它在變量定義時不會覆蓋它?或者,當與變量一起使用時,關鍵字是否有特殊含義?
如果有人向我解釋這一點,我將不勝感激。謝謝!
最後一個分號正在擾亂我。 –
看看[這個鏈接]是否有幫助(http://stackoverflow.com/questions/856636/effects-of-the-extern-keyword-on-c-functions)有幫助。 –
問題必須是變量的初始化 – nabroyan