프로그래밍

[C] 정적함수

지니아부지 2013. 1. 29. 23:53

[출처] http://sunnmoon.egloos.com/tb/554833


보통 함수 선언 앞에도 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()을 사용하게 됩니다.


'프로그래밍' 카테고리의 다른 글

VT 100 ESC 제어코드  (0) 2017.02.24
소스인사이트 단축키  (0) 2013.04.23
테라텀(Tera Term) 로그에 타임스탬프 출력 및 로그파일 이름 변경  (0) 2013.01.21
Posix Thread Example  (0) 2012.08.10
CallBack func  (0) 2012.07.24