C언어에서 아주 중요한 static의 활용을 알아 보도록 하겠습니다. 여러 사람이 함께 작업하는 프로젝트에서는 static을 적절히 사용해야 합니다. static 으로 선언만하고 사용하지 않는 함수나, 변수를 컴파일러에서 warning해주기 때문에 아주 유용합니다.
여러분들도 아시겠지만 컴파일러에서 error를 발생하면 타킷 보드에 프로그램을 로딩할 수가 없습니다. 그러나 warning이 발생하도라도 로딩이 가능하기 때문에 무시하는 경우가 많은데, 이는 런타임시에 에러를 발생 할 수 있으므로 warning도 반드시 없애주는 것이 좋습니다.
static은 여러개의 파일내에 해당 파일내의 scope로 동일한 이름의 함수를 각 파일별로 만들 수 있게 해줍니다. 예를 들어 보겠습니다. 여러개의 .c 파일을 만들어 봅시다. Uart.c, Lcd.c, File.c 각각의 파일에 각각 같은 함수를 만들어 보면
//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별로 만들 수 있습니다. 물론 File scope 이기 때문에 extern을 해서는 안됩니다. 함수 뿐 만 아니라 변수도 위와 같이 선언하여 사용할 수 있습니다.
이렇게 사용하는 이유는 여러가지가 있습니다만 인터페이스의 통일을 위해 사용하기도 하고 구현부분을 은폐하기 위해 사용하기도 합니다. 또한 사용하지 않는 변수나 함수를 미리 방지하기 위해 사용하기도 합니다. 여러분들도 반드시 File 내부에서 사용하는 함수에 대해서는 static으로 선언하는 습관을 들여보시는 것을 권장드립니다.
이상입니다.
'▶ C Application > 디자인 패턴' 카테고리의 다른 글
Facade 패턴 (0) | 2024.02.12 |
---|---|
Builder 패턴 - 키(Key)처리 (1) | 2024.01.17 |
Adapter 패턴 - 3 (1) | 2023.12.24 |
Adapter 패턴 - 2 (0) | 2023.12.24 |
Adapter 패턴 - 1 (0) | 2023.12.24 |