• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Internal Linkage 질문

23.06.07 10:49 작성 조회수 233

1

25:10 초 쯤부터

Internal Linkage 에 대한 설명을 하십니다.

int g_a = 1;

이 Internal Linkage 로 개별 cpp파일 안에서만 전역변수처럼 작용한다고 하셨습니다.

 

그런데 그 후에 26분 쯤에서는

static int g_a = 1;

에서 static이 이 변수가 다른 cpp파일에서 쓰이지 못하게 제한해준다고 하셨는데,

이미 제한해줄 게 없이 이거는 이미 Internal Linkage 변수가 아닌가요..?

static 이 없으면 파일 안에서만 전역변수가 되는 것이 아니라, 전체 파일에서의 전역변수가 되는 것이고 static이 있어야만 파일 내의 전역변수가 되는 건가요?

이 부분을 여러번 돌려봤지만 너무 헷갈려서 질문 드립니다.

답변 1

답변을 작성해보세요.

1

Soobak님의 프로필

Soobak

2023.06.07

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

말씀하신 것과 같이 int g_a = 1; 과 같이 선언된 전역 변수는 Internal Linkage 변수입니다.

'다른 .cpp 파일에서 접근할 수 있는 전역 변수' 의 개념 및 설명과 '다른 .cpp 파일에서는 접근하지 못하게 하는 전역 변수' 개념 및 설명의 구분을 위해 static 키워드를 먼저 학습하신 것으로 이해하시면 좋을 것 같습니다. static 키워드로 한정한 전역 변수는 다른 .cpp 파일에서 쓰이지 못하게 제한되는 것이 맞습니다.

바로 이어서 등장하는 extern 키워드의 내용을 학습하고 나시면 궁금하신 부분들이 잘 해결되실 것 같습니다.