일부 소스 코드를 분석하는 동안 하나의 파일 (.c)에 다른 파일이 아닌 이라는 정의가 있습니다. (이는 flex에서 생성 된 파일의 코드 중 하나이며 포함 된 파일이 없습니다 (stdio.h, yyin를 정의 string.h, errno.h, stdlib.h, inttypes.h)) :변수의 선언과 extern 선언이 같은 파일에 존재할 때의 의미는 무엇입니까?
extern FILE *yyin, *yyout;
FILE *yyin = (FILE*) 0, *yyout = (FILE *) 0;
내가 기본적으로이 말씀이 무슨 뜻인지 알고있다.
그러나 extern 키워드는 변수와 같은 정의를 사용하고 다른 파일에있는 함수를 사용합니다. (그것은 그것을 위해 메모리를 할당하지 않습니다.)
그래서, 내가 무엇을 의미하는 것은 코드가 :
FILE *yyin = (FILE*) 0, *yyout = (FILE *) 0;
이 아닌 동일한 파일에 다른 파일에 표시한다. 예를 들어
,a.c
extern File *yyin; /* It means that a.c want to use yyin declared in b.c */
int main(void) {
yyin = *expressions*; /* yyin is variable in b.c */
return 0;
}
b.c
File *yyin = (FILE*) 0;
왜 그들은 같은 파일에 존재합니까? 같은 이름을 사용하는 extern 키워드와 일반 변수 선언이 같은 파일에있을 때 특별한 의미가 있습니까?
만약'# include'가 어떻게 작동하는지 생각해 보면 정의가있는 번역 단위가 extern 선언을 가지고있는 것이 정상적인 것임을 알게 될 것입니다. –