• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

@26:20 static 관련 질문

23.11.15 07:55 작성 조회수 198

1

@26:20 에 "일단 이 static 은 문법상 이 전역변수가 다른 cpp 파일에서 사용될 수 없도록 막아주는 역할을 해요" 의 의미가

링킹시, namespace 혹은 class 내부에 static 이 정의 되어있지 않으면 다른 cpp 파일에서 접근할수 없기 때문인게 맞을까요? 접근 제한자의 느낌은 아닌것같고, extern variable 과 비교하기 위해서 설명을 저렇게 하신건지 궁금합니다. !

답변 1

답변을 작성해보세요.

2

Soobak님의 프로필

Soobak

2023.11.15

안녕하세요, 답변 도우미 Soobak 입니다.

 

전반적으로 잘 이해하신 것 같지만, 조금 혼동하시는 부분 또한 있으신 것 같아 부연 설명을 드려봅니다.

 

static 키워드로 선언한 전역변수는 "내부 연결" 이 되어 해당 소스 파일에 대해서만 내부적으로 존재합니다.
따라서, static 전역변수는 링크 범위를 해당 변수가 선언된 소스 파일 내에서만 보이도록 합니다.

즉, 다른 소스 파일이나 오브젝트 파일들에서는 해당 변수를 볼 수 없습니다.
이는 namespaceclass 내부의 static 정의 유무와는 별개의 문제입니다.

 

말씀해주신 것 처럼 "외부 연결" 이 되는 extern 키워드로 선언한 전역변수와의 비교, 즉, '전역 변수의 연결 범위'에 초점을 맞추어서 학습을 하시는 것이 좋을 것 같습니다.

 

추가적으로, 해당 강의의 47:00 부분 경에서 교수님께서 정리해주시는 내용과, 이어지는 섹션들의 강의를 학습하시면서 static 키워드가 사용되는 경우들을 학습하시다보면, 궁금하신 내용이 보다 더 명쾌하게 잘 이해되실 것 같습니다.

 

이해 했습니다 🙂

namespace 혹은 class 외부에 선언된 "전역변수" 와, namespace/class 내부에서 전역적 으로 사용되는 변수들과 혼돈이 있었던것 같네요. 현재 강의 에선 전자에 속하는 전역변수에 전제를 두고 있다는것을 간과 했던것같습니다.

 

삐른답변 감사합니다.