2013-10-19 34 views
-1

enter image description here我的C語言編程(Dennits M.裏奇)和微軟(http://msdn.microsoft.com/en-us/library/z4ew7daa.aspx)讀它, EXTERN變量是不可見的(無法訪問)的主。 這是令人困惑的,因爲我多次使用以下技術。專家,請幫忙!extern變量名在main中不可見?

#include<stdio.h> 
int sp = 99; //extern variable 
int main(){ 
printf("sp is :%d",sp);  //not visible? 
sp = 98; 
printf("sp is :%d",sp); //ofcourse it is visible! 
} 

謝謝。

+1

在MSDN示例中,全局變量*在'main'的定義之後聲明*。 –

+0

如果'sp'是在與程序鏈接的另一個源文件中定義的變量,則需要執行'extern int sp = 99;'。那麼你應該可以主要訪問它。 – user2233706

+0

我正在專門討論書中的內容,如更新後的圖片所示。謝謝。 –

回答

2

你的鏈接有此碼

int main() {} 

int var = 0; 
double val[MAXVAL]; 
char find(fileptr) {} 
int count(double f) {} 

,然後繼續說,VAR和Val不是主要用。那是因爲他們是 後主要宣佈。

它與extern變量無關。只有聲明的順序。


更新。照片說的是完全一樣的東西。它們在文件中的顯示順序決定了它們的可見性。

變量在main中不可見的原因與它們在文件中出現的順序有關。他們主要是在主後。

照片說,「外部變量或函數的範圍從它被聲明爲文件被編譯器的端部的點持續。」。

它沒有說明extern變量在main中不可見。

+0

但什麼是作者時,他說:「外部變量不在主??可見」 –

+1

我的意思在你的鏈接中沒有看到這句話,無論如何,main和其他函數的可見性一樣,你的引用看起來很明顯是虛假的, –

+0

請看更新後的圖片,謝謝。 –