2013-10-19 2 views
-1

enter image description here C 프로그래밍 (Dennits M. Ritchie)과 Microsoft (http://msdn.microsoft.com/en-us/library/z4ew7daa.aspx)에서이 코드를 읽었습니다. 외부 변수는 main에서 볼 수 없으므로 액세스 할 수 없습니다. 다음과 같은 기술을 여러 번 사용 했으므로 혼란 스럽습니다. 전문가, 제발 도와주세요!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 및 발 메인에서 사용할 수없는 말을 진행한다. 그것은 메인 이후에 으로 선언 되었기 때문입니다.

extern 변수와 아무 관련이 없습니다. 선언의 순서 만.


업데이트. 사진은 똑같은 말을하고있다. 파일에 나타나는 순서는 파일의 표시 여부를 결정합니다.

변수가 main에 표시되지 않는 이유는 변수가 파일에 나타나는 순서와 관련이 있습니다. 그들은 메인 이후에옵니다.

사진에 "외부 변수 또는 함수의 범위는 컴파일되는 파일의 끝으로 선언 된 지점부터 지속됩니다."라고 표시됩니다.

메인에서 보이지 않는 extern 변수에 대해서는 아무 것도 말하지 않습니다.

+0

"저자는"extern 변수가 주 메뉴에 보이지 않는다 "고 말하면서 무엇을 의미합니까? –

+1

귀하의 링크에서 그 문장을 보지 마시오 어떤 경우에도 주 기능은 다른 기능과 동일한 가시성을 가지고 있으며 귀하의 견적은 뻔뻔스럽게 거짓으로 보입니다 –

+0

사진과 함께 업데이트 된 게시물을 참조하십시오. –