본문 바로가기
C++ 200제/코딩 IT 정보

C++ 전역변수 선언 예제와 안 쓰는 방법 (global variable)

by vicddory 2017. 3. 6.

C++ 전역변수 선언 예제와 안 쓰는 방법 (global variable)


기본적으로, 전역변수는 일단 안 쓰는 게 가장 좋긴 합니다. 그렇지만 사용할만한 상황이 존재합니다.... 그렇지만 객체지향에는 "전역"이란 개념 자체가 없습니다.


가령, extern int nTemp;라고 선언을 한다면, nTempobject file 어딘가에 선언된 전역변수를 사용하겠다는 것이죠. 그리고, stdafx.cpp와 stdafx.h 파일에 전역변수를 선언하는 경우가 있는데, stdafx는 변동성이 거의 없는 것, 한번 선언하면 변하지 않는 형태의 것들만 골라서 넣어놔야 합니다.


때에 따라서 전역변수가 그러할 순 있으나, 변수가 거의 변하지 않는다면 굳이 변수일 이유가 없기도 하죠. 그래서 stdafx.cpp와 stdafx.h에 전역변수를 선언할 경우는 아예 없다고 봐야 합니다.

굳이 전역변수를 사용한다면, 대게 GLOBAL이란 프로젝트 폴더에 Global.cpp, Global.h를 만들어서 사용하세요.


헤더 파일을 만들 때 중요한 건 중복 컴파일을 막기 위해 아래처럼 맨 위에 소스 코드 두 줄을 넣어줘야 합니다. 대게 알아보기 쉽게 하려고 그 헤더 파일의 이름을 그대로 적어주지요.


전역변수 예) Global.h

 

1
2
3
4
5
6
7
#ifndef __GLOBAL_H__
#define __GLOBAL_H__
 
extern CString FILE_INI;
extern int SetNum();
 
#endif
cs


전역변수 예) Global.cpp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include "Global.h"
 
CString FILE_INI;
 
int SetNum()
{
    int nLeftValue;
    int nRightValue;
 
    nLeftValue = 1;
    nRightValue = 2;
 
    return nLeftValue + nRightValue;
}
cs

이렇게 정의된 Global.h 파일을 실제로 사용할 곳에서 #include "Global.h"란 소스를 넣어 사용하시면 됩니다.


C++ 전역변수 선언 예제와 안 쓰는 방법 (global variable)[C++ Global Variable Example]


그렇지만 문제는, 전역변수는 사용하지 않는 것이 권장사항입니다. 그렇다면 어떻게 해야 전역변수를 사용하지 않느냐, 여러 방법이 있겠으나 아래 참조 사이트에서 제안하는 것은 아래입니다.


출처 - [질문] 전역변수를 쓰지 않는 팁들.. [클릭]


저같은 경우에는.. (물론 제가 사용하는 프로젝트에 한해서만 사용하지만) 전역변수 대신에.. const static을 사용합니다. 헤더에 public으로 const static으로 변수를 하나 잡고요...


소스에 클래스명::변수명 = 값


이렇게 한 담에... 필요한 부분에는 헤더파일 인클루드하구.. 클래스::변수명

이렇게 해서 사용하지요..


C++ 전역변수 선언 예제와 안 쓰는 방법 (global variable)

댓글