반응형

보통 함수 선언 앞에도 static을 붙일수 있습니다.


원래 static은 전역 변수를 선언할 때 많이 사용되는데

함수 앞에 static을 선언하면...

이 함수가 선언된 파일 안에서만 함수를 호출할 수 있다는 의미가 됩니다.



따라서 파일 3개에서 다음과 같은 사용이 가능해 지네요.


a.c  파일


static void func1(void)

{

    ......

}


b.c 파일

void func1(void)

{

    ......

}



main.c 파일


extern void func1(void)


void main(void)

{

    func1();


    ......

}



원래 static으로 선언되지 않았으면 전체 프로젝트에서 같은 이름의 함수 func1()이 2개나 선언되었기 때문에 컴파일 에러가 발생합니다.


그러나 위처럼 a.c 파일의 func1()은 static으로 선언되면 컴파일 에러가 발생하지 않습니다.


단 a.c 파일의 func1()은 a.c 파일에서만 효력을 가지게 되며, 당연히 a.c 파일에서 호출하는 func1()은 a.c 파일에 선언된 함수를 Call 하는 것이고

main.c 처럼 다른 파일에서 호출하는 func1()은 b.c 파일에서 선언된 func1()을 사용하게 됩니다.




그런데 이거 여러사람이 작업할 때, 헷갈리면 정말 골때리는 경우도 나오겠네요.

모 디버깅을 하면 바로 알겠지만...

+ Recent posts