Programming Language/C, C++

static을 이해합시다

MOLOKINI 2014. 5. 13. 23:02

용어부터 살펴보아요

 

static : 정적인, 움직이지 않는

 

static의 특징

 - 한번 생겨나면 프로그램이 종료될 때까지 소멸되지 않는다, 객체 소멸시점이 일정하다.

 - 내부 연결성 : 전역 static 객체나 함수는 외부 링크단계에서 바인딩이 발생하지 않는다.

    그러니까, 컴파일 할 때 링크단계에서 외부 라이브러리가 static객체를 참조할 수 없다.

 - 어떤 모듈 단위라도 static 변수는 단 한번만 생성

 

바인딩(binding)

 - static을 이해하려면 필요한 개념

 - extern을 통해 두 파일의 변수를 공유하는 작업을 바인딩이라고 한다

 

간단한 예를 살펴보겠습니다

 

@ header.h

int global;

 

@ a.cpp

int main()

{

   global = 3;

}

 

@ b.cpp

int main()

{

   global = 5;

}

 

이렇게 하면 에러가 발생합니다.

동일한 이름의 전역변수 두개를 다른파일에서 생성했기 때문에,