C언어 기본
정적변수(static)
홍박스
2021. 7. 13. 00:07
728x90
static을 왜쓸까?
static을 말하기 전에 분할구현에 대하여 알아보자
분할구현은 사람이 보기 편하기 위해서 혹은 사용하기 편하기 위해서
기능별로 나누어서 구현하는 것을 말한다.
예를 들어
헤더와 cpp파일 둘로 나누어서
func.h , func.cpp
fun.h를 func.cpp에 include 하면
fun.h에서 정의한 자료형들을 cpp에서 사용가능하다(링크단계에서 모아줌)
그렇다면 모든것을 헤더에 구현 하고 사용하면 되는것아닌가? 라는 의문이 들 수 있다.
하지만 cpp를 여러개 만든다면 자료형의 중복정의 문제가 나올 수 있다.(개별적인 상항에서 문제 없지만 합쳐질떄 문제가 발생)
또 전처리를 하였다고 하여도 헤더의 정의된 자료형들을 사용 할 수 없다.(데이터 영역에 들어가지만 코딩할떄는 ide가 모름)
그 문제를 해결 하기 위해선 어떻게 해야할까?
전체 빌드 과정 중에서 각각 컴파일한 파일들을 링킹을 한다 그때 정의가 중복된 경우
정적변수 static(데이터 영역 메모리) 을 사용하여 자료형을 만들어 준다면 사용가능하다
정적변수가 뭐길래?
안움직인다는 것이 무엇일까? 선언된 곳에서만 있는다. 다시말해 선언된 곳에서만 사용된다는 뜻이다.
그래서 같은 이름이더라고 선언한 곳에서만 활동 가능하기 때문에 문제가 없다.
+함수 안에 쓴다면 최초 한번만 실행되고 데이터 영역에 들어간다.
728x90