static

C언어에서 아주 중요한 static의 활용을 알아 보도록 하겠습니다. 여러 사람이 함께 작업하는 프로젝트에서는 static을 적절히 사용해야 합니다. static 으로 선언한 사용하지 않는 함수나, 전역변수를 컴파일러에서 warning해주기 때문에 아주 유용합니다. 

아시겠지만 컴파일러에서 error를 발생하면 타킷 보드에 프로그램을 로딩할 수없습니다. 그러나 warning이 발생하면 로딩이 가능하기 때문에 무시하는 경우가 많은데, 이는 런타임시에 에러를 발생 할 수 있으므로 warning도 없으주는 것이 좋습니다. 

static은 여러개의 파일내에 해당 파일 scope로 동일한 이름의 함수를 만들 수 있게 해줍니다. 예를 들어 보겠습니다. 여러개의 .c 파일을 만들어 봅시다. Uart.c, Lcd.c, File.c 각각의 파일에 Function을 만들어 보면

Uart.c ------------------------------------------------

static void Open(void)
{
    ...
}

static void Close(void)
{
    ...
}

static void Read(void)
{
    ...
}

static void Write(void)
{
    ...
}

Lcd.c ------------------------------------------------

static void Open(void)
{
    ...
}

static void Close(void)
{
    ...
}

static void Read(void)
{
    ...
}

static void Write(void)
{
    ...
}

File.c ------------------------------------------------

static void Open(void)
{
    ...
}

static void Close(void)
{
    ...
}

static void Read(void)
{
    ...
}

static void Write(void)
{
    ...
}

위의 예제처럼 동일한 함수명으로 만들 수 있습니다. 물론 file scope 이기 때문에 extern을 해서는 안됩니다. Function 뿐만 아니라 변수도 위와 같이 선언하여 사용할 수 있다.

이렇게 사용하는 이유는 여러가지가 있습니다. 인터페이스의 통일을 위해 사용하기도 하고 구현부분을 은폐하기 위해 사용하기도 합니다. 또한 사용하지 않는 변수나 함수를 미리 방지하기 위해 사용하기도 합니다. 또한 추후 struct에서 static 함수 포인터를 할당하는 예제를 통해 더 자세한 이유를 설명하도록 하겠습니다.



'▶ 이전글 > C Coding' 카테고리의 다른 글

2차원배열, 함수 매개변수로 넘기는 방법과 파일명 정렬 소스  (0) 2015.09.15
불완전 선언(구조체전방선언)  (0) 2014.10.02
typedef, define  (0) 2014.10.02
enum  (0) 2014.10.02
assertion  (0) 2014.10.02