Static 변수 활용..?

dandb3·2023년 2월 22일
0

이것저것 TMI

목록 보기
2/17

질문 : 전역변수를 사용하지 않고 전역변수처럼 동작하는 방법을 구현할 수는 없을까?

  • static 변수는 전역변수와 유사하게 Data 영역에 메모리가 할당되며, 그 값은 프로그램이 종료될 때 까지 할당해제되지 않는다.

  • 하지만 함수 내부에서 static 변수를 선언하게 되면 그 함수에서만 접근이 가능하고, 외부에서는 접근이 불가능하다.

  • 그래서 생각해 낸 방법

    1. 전역 변수용(..?) 함수를 하나 만들고, 그 안에 static 변수를 내가 쓰고 싶은 전역변수 대용으로 만들어 놓는다.
    2. 전역 함수(라고 해야하나)를 만들어서 전역 변수용 함수의 static 변수를 수정하는 기능을 넣는다.
    3. 또 하나의 전역 함수를 만들어서 static 변수의 값을 읽어오는 기능을 넣는다.
    4. 전역변수를 쓸 때처럼 사용한다.

    예시)

    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

profile
공부 내용 저장소

0개의 댓글