헤더에
extern int a;
했으면
메인함수 있는 C파일 부분가서
#include "default.h"
요런식으로 헤더파일 추가시켜서
거기있는거 그냥 printf("%d",a);
직으면 메인에 a 선언 안해도 a값이 그냥 찍히잖아
근데
메인에서 int a = 20;
이거 왜 되는지 모르겟다
재정의 아님 ?
extern int a;
했으면
메인함수 있는 C파일 부분가서
#include "default.h"
요런식으로 헤더파일 추가시켜서
거기있는거 그냥 printf("%d",a);
직으면 메인에 a 선언 안해도 a값이 그냥 찍히잖아
근데
메인에서 int a = 20;
이거 왜 되는지 모르겟다
재정의 아님 ?
...?? 진짜네
스코프에 대한 이해 우선
아닌가? 헤더랑 소스랑 분리하는걸 다 까먹어서 모르겠다...
전역변수 지역변수..?
전역변수는 지역변수에 가려진다 이거아닌가 [Bald Eagle]
복룡//ㅇㅇ
아니 메인함수 안에말고 전역으로 갈겨도 오류안남
헤더 인클루드하고 바로밑에 .. 메인함수가 아니라 위에 메인이라 한거 메인 파일을 의미하는거임
extern int a; int a = 20; 이게 왜 되냐고 물어보는건가?
넹
아마 그것도 스코프 관련 이슈였던거 같은데.. 아닌가 긴가민가함
우선순위가 있는데 1. 초기화된 전역변수 2. 그냥 전역변수 3. extern 초기화된 전역변수 4. extern 전역변수
설명하자면 extern int a; int a = 20; 이건 재정의가 아님
그리고 링크과정에서
extern int a; 선언은 외부에 int형을 가진 이름이 a인 변수가 있다는걸 알려주는거고, int a = 20; 는 실제로 a변수를 정의한거지.