C의 static 함수는 왜 쓰는 건가요?
조회수 5631회
발생하는 문제 및 실행환경
C static 함수에 대해 질문드립니다에서 static 함수가 있다고 하던데 왜 함수를 같은 파일안에서만 쓸 수 있게 만드는지 궁금합니다.
1 답변
-
static 함수는 같은 translation unit내에서만 보이기 때문에 다른 translation unit에게 이 함수의 존재를 알리고 싶지 않을 때 씁니다(캡슐화)
helper_file.c:
int f1(int); /* prototype */ static int f2(int); /* prototype */ int f1(int foo) { return f2(foo); /* f1과 f2는 같은 translation unit에 있기 때문에 가능 */ } int f2(int foo) { return 42 + foo; }
main.c:
int f1(int); /* prototype */ int f2(int); /* prototype */ int main(void) { f1(10); /* f1은 링커에서 보임 - ok */ f2(12); /* f2는 링커가 볼 수 없음 - error */ return 0; }
댓글 입력