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

조회수 5666회

발생하는 문제 및 실행환경

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)