강의

멘토링

로드맵

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

thd2tn님의 프로필 이미지
thd2tn

작성한 질문수

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

16.6 #include와 헤더 파일

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

해결된 질문

작성

·

277

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에 같은 변수 이름으로 접근이 가능한 메모리 공간이 하나 더 생기지만 각 파일 입장에서는 해당 변수 이름으로 접근을 할 때 컴파일러 입장이나 링커 입장에서 컴파일 오류나 링킹 오류를 발생시키지 않는다고 이해했습니다.

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

퀴즈

전처리기(preprocessor)가 프로그램 빌드 과정에서 하는 주된 역할은 무엇일까요?

소스 코드를 기계어로 번역합니다.

다른 소스 파일이나 헤더 파일의 내용을 복사하여 붙여넣고 매크로를 확장합니다.

여러 목적 파일을 합쳐 실행 파일을 만듭니다.

프로그램 실행 중 발생하는 오류를 처리합니다.

답변 1

1

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

thd2tn님의 프로필 이미지
thd2tn

작성한 질문수

질문하기