용어부터 살펴보아요
static : 정적인, 움직이지 않는
static의 특징
- 한번 생겨나면 프로그램이 종료될 때까지 소멸되지 않는다, 객체 소멸시점이 일정하다.
- 내부 연결성 : 전역 static 객체나 함수는 외부 링크단계에서 바인딩이 발생하지 않는다.
그러니까, 컴파일 할 때 링크단계에서 외부 라이브러리가 static객체를 참조할 수 없다.
- 어떤 모듈 단위라도 static 변수는 단 한번만 생성
바인딩(binding)
- static을 이해하려면 필요한 개념
- extern을 통해 두 파일의 변수를 공유하는 작업을 바인딩이라고 한다
간단한 예를 살펴보겠습니다
@ header.h
int global;
@ a.cpp
int main()
{
global = 3;
}
@ b.cpp
int main()
{
global = 5;
}
이렇게 하면 에러가 발생합니다.
동일한 이름의 전역변수 두개를 다른파일에서 생성했기 때문에,
'Programming Language > C, C++' 카테고리의 다른 글
헝가리안 표기법 (0) | 2014.05.13 |
---|---|
멀티스레드 (스레드함수) (0) | 2014.05.13 |
디버깅용 __LINE__, __FILE__ 등등 (0) | 2014.05.13 |
반올림 매크로 - C++ (0) | 2014.05.13 |
Cast - reinterpret_cast, static_cast, const_cast, dynamic_cast (0) | 2014.05.13 |