달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

흔히 함수 내의 static 키워드는 함수 내에 선언된 변수에 대해서
해당 함수가 종료되어도 다시 함수가 실행되었을 때 그 값을 유지하도록 하기 위해서 사용한다.
참고적으로 이를 통해 해당 함수가 몇 번 호출되었는지 알 수 있다.

하지만 여기서 말하고자 하는 것은 함수 밖에 선언되어
외부 변수 혹은 전역 변수로 불리는 변수에 static이 적용된 경우이다.
이 경우 일반 전역 변수처럼 초기화를 하지 않아도 '0'으로 초기화 되며,
모든 함수에서 접근이 가능하다.

하지만 이때 접근 가능한 영역은 일반 전역 변수와 달리 해당 파일 안으로 제한된다.
참고적으로 다른 파일에 선언된 일반 전역 변수는 extern 키워드를 통해서 접근 가능하다.

이제 본론(?)이다.
이러한 static을 함수에도 적용할 수 있다.
함수 앞에 static 키워드를 붙이면 특정 파일에서만 사용하는 함수를 만들 수 있다.
static void _init();
위와 같은 형식이다.
선언과 정의에 모두 static을 붙여 놓고 이용하면 다른 파일에서는 접근 할 수 없다.
이를 이용하면 다른 파일에 같은 이름의 함수가 있더라도
해당 파일에서만 이용하는 특정 함수를 만들 수 있다.
추가적으로 내부적으로만 이용하는 함수의 이름에는 주로 앞에 '_'를 붙인다.

참고적으로 wiki에 있는 static 내용이다.
OOP 쪽의 개념도 설명해서 위의 내용과는 좀 다른 느낌이다.
http://en.wikipedia.org/wiki/Static_variable

'Lang, Tool, Env' 카테고리의 다른 글

CRC를 통한 error 검출  (0) 2007.05.16
do while(0) 을 이용한 goto 대체  (0) 2007.05.16
CONTAINING _RECORD macro  (0) 2007.04.26
크기 미지정 배열의 새로운 고찰  (0) 2007.04.19
Verify()  (0) 2007.04.14
Posted by neodelicious
|