C의 static 함수는 왜 쓰는 건가요?


발생하는 문제 및 실행환경

C static 함수에 대해 질문드립니다에서 static 함수가 있다고 하던데 왜 함수를 같은 파일안에서만 쓸 수 있게 만드는지 궁금합니다.

  • 2016년 02월 01일에 작성됨

조회수 377


1 답변


좋아요
0
싫어요
채택취소하기

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;
}
  • 2016년 02월 01일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close