Extern 변수 사용방법


보통은 개발할때 extern 변수는 사용이 금기시되는 항목중에 속하는데요, 그래도 간혹가다가 쓸모가 있을때도 있으니 사용방법에 대해서 간락하게 적어 놓아 보아요. 나중에 제가 잊어버렸을때 요거 보고 참고할려구요. ㅎㅎㅎㅎ


extern 변수 사용방법은 생각보다 간단합니다.


첫째, extern 변수를 선언할 헤더 파일을 생성한다.

둘째, extern 변수를 초기화할 cpp 파일을 생성한다.


끝! ? ㅋㅋ



너무 간단한가요?

제가 실제 게임개발에 가끔 사용하는 예제를 적어볼께요^^ 물론 이 방법이 절대적인 방법은 아니니 그냥 참고 정도로만 해주세요^^


Cocos2dx 를 사용해서 앱 개발에 사용했던 코드입니다.


header file 이름은 common.h 입니다.


#pragma once

#ifndef __COMMON_H__

#define __COMMON_H__


#pragma execution_character_set("utf-8")


//--------------------------------------------------------------------- Include

#include "cocos2d.h"


//------------------------------------------------------------------ Name space

USING_NS_CC;


extern long long _gHighScore;


struct Player

{

std::string szName;

int Level;

}


extern Player _gPlayer;


#endif


저는 여기에 Player 라는 구조체와 highscore라는 변수를 하나 선언해서 사용했어요

이들 두 extern 변수는 초기화가 반드시 필요한데 초기화 하는 코드도 나중에 헷갈리지 않도록  common.cpp 파일을 만들어서 그 안에서 다 해줬어요.


Common.cpp 전역변수 초기화 파일

#include "Common.h"


long long _gHighScore = 0;

Player _gPlayer;



이렇게 두 전역 변수를 초기화 하면 끝.  이 변수를 사용하는 방법은 간단해요.

예를 들자면 MainScene 이라고 하는 클래스에서 전역변수에 접근하는 방법이에요.


void MainScene::playerLevelup()

{

_gPlayer.Level += 1;

}


void MainScene::setPlayerName(cosnt std::string &iName)

{

_gPlayer.szName = iName;

}


void MainScene::setHighScore(const long long &iHighScore)

{

_gHighScore = iHighScore;

}


이러면 끝~ 간단하지요?


협업하는 프로그램 개발환경에서는 전역변수 남발은 곧 자폭의 길이니 아무쪼록 전역변수 사용에 앞서 한번 더 생각해 보시고 사용하세요^^