본문 바로가기

삼성전자 알고리즘/기타

static과 extern 변수

main.cpp와

sub.cpp 파일이 있을 때,

 main에서 선언한 전역변수(int global_var)가 있을 때

<main.cpp>

int global_var;
void main()

{
    global_var = 1;
    printf("%d \n", global_var);

}

<main.cpp>에서 선언한 전역 변수를 다른 파일의 코드에서 사용하려면 아래와 같이 하면 됨.

<sub.cpp>

int global_val;
int sub()
{
     global_val = 1
     printf("[sub]%d \n", global_var);;
}

주의) extern 키워드를 main.cpp에서 안쓰고 sub.cpp에서 선언해도 되지만 둘 다 extern 을 붙이면 빌드 에러가 날 수 있음.

 

satatic 키워드를 전역 변수에 쓰면 그 전역 변수는 해당 파일에서만 전역 변수로 동작.

즉 extern에 의하여 다른 파일에서는 이용할 수가 없다. 일반적으로 extern을 이용하여 다른 파일에서도 전역 변수에 접근하게 하기 보다는 static 키워드를 이용하여 한 파일에서만 전역 변수로 사용하고, 다른 파일에서는 별도의 함수를 이용하여 값을 변경하거나, 얻는 방법을 이용하는 것이 바람직하다.
(즉, 다른 파일에서 초기화 할 수 없다고.. 근데 뭔 init 함수야... 날아간 나의 한시간 반)

 

출처: https://it4all.tistory.com/25 [쉽게 풀어쓴 IT 이야기]

'삼성전자 알고리즘 > 기타' 카테고리의 다른 글

21. C++ Programming  (0) 2019.07.01
코딩인터뷰완전분석 : 자외선을 피해가기(BFS) + Heap  (0) 2019.06.16
동적할당  (0) 2019.05.21
18. 스레드  (0) 2019.05.16
17. Web Programming(JSP & Servlet)  (0) 2019.05.16