인프런 커뮤니티 질문&답변

thd2tn님의 프로필 이미지
thd2tn

작성한 질문수

홍정모의 따라하며 배우는 C언어

16.6 #include와 헤더 파일

16:00 부분 질문있습니다.

해결된 질문

작성

·

208

0

제가 기억하기로 static keyword를 하면
변수가 BSS에 저장이 된다고 알고 있는데요.

12강 강의를 전부 다 복습했는데도 불구하고 다른 파일에서 같은 이름을 가진 변수에 static keyword를 사용했을 때 마치 automatic variable처럼 다른 주소를 갖는 다는 내용의 설명은 찾질 못했습니다.

static일 경우는 그 파일 혹은 블록 내에서만 사용되는 지역변수이지만 automatic variable과는 다르게 프로그램의 시작부터 끝까지 남는다고 알고 있습니다.

그래서 16:00부터의 강의 내용이 잘 와닿지가 않는데요. 제가 그나마 이해한 부분은 만약 my_functions.h 에서 static이 아닌 extern으로 si를 선언했다면 #include "my_functions.h"를 했을 때 si의 선언이 중복이 돼서 불가능하지만

static keyword로 선언을 했다면 해당 파일 내에서만 visible한 지역변수로 취급이 되기 때문에 다른 파일에서 또 선언이 될 시 프로그램 전체로 봤을 때는 BSS에 같은 변수 이름으로 접근이 가능한 메모리 공간이 하나 더 생기지만 각 파일 입장에서는 해당 변수 이름으로 접근을 할 때 컴파일러 입장이나 링커 입장에서 컴파일 오류나 링킹 오류를 발생시키지 않는다고 이해했습니다.

제가 생각한 내용이 맞거나 혹은 틀린 부분이나 추가적으로 알아야 하는 내용이 있다면 말씀해주시면 감사합니다.

답변 1

1

맞게 이해하신 것 같아요.!

thd2tn님의 프로필 이미지
thd2tn

작성한 질문수

질문하기