static 변수는 전역변수와 유사하게 Data 영역에 메모리가 할당되며, 그 값은 프로그램이 종료될 때 까지 할당해제되지 않는다.
하지만 함수 내부에서 static 변수를 선언하게 되면 그 함수에서만 접근이 가능하고, 외부에서는 접근이 불가능하다.
그래서 생각해 낸 방법
예시)
int global_var_function(int mode, int val)
{
static int g_var;
if (mode == 0)
return (g_var);
else
g_var = val;
}
int get_global_var(void)
{
return (global_var_function(0, 0));
}
void set_global_var(int val)
{
global_var_function(1, val);
}
요로코롬 쓰면 된다.
그래서 이 방법이 norm 회피 말고는 진짜 이점은 없는가?
- encapsulation의 기능을 하고, maintaining에는 이점이 있다.
- 하지만 디버깅, 코드 가독성 측면에서는 결국 더 안 좋을 수 있기 때문에 이 둘의 적절한 조율이 필요하다.
by chatGPT