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

발생하는 문제 및 실행환경

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

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;
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.