|
컴파일 순서 때문인거 같은데요.
Project -> View Source 하시면 vcl.h를 include 하는 부분이 있습니다.
이미 거기서 해더를 읽었기 때문에 적용된게 아닌가 싶습니다. -_-
프로그램에서 자주 쓰이는 변수는 global로 관리하면 편합니다.
단~ 편하다. 그 이상도 이하도 아닙니다.
좋은 방법은 아니죠.
객체를 선언하고 객체의 인스턴스를 global로 선언하는 방법이 그나마 낫습니다.
최소한의 데이터 보호는 될테니까요.
class SETTINGS { int member_a; short member_b; public: {IO매소드} };
extern SETTINGS g_Settings;
솔직히 데이터 관리만 잘하면 어떻게 코딩해도 크게 상관 없습니다.
하지만 프로그래머는 사람인지라...
SAFE_DELETE() 같은 것들이 나오는 이유가 사람이라 생길 수 있는 실수를 막기 위해서니까요.
CPU 클럭을 희생하는 대신에 프로그래머의 실수를 방지하려는 목적이죠.
그 실수를 방지하는데 global variables는 도움이 안 됩니다.
박진수 님이 쓰신 글 :
: 안녕하세요.
:
: 빌더 2009에서 GlobalDefine.h // GlobalDefine.cpp를 만들어
:
: 전역 변수(여러군데서 많이 사용되서 만들어놓았습니다)를 저장했습니다.
:
: 내용은
:
: 헤더 :
: //---------------------------------------------------------------------------
: #ifndef GlobalDefineH
: #define GlobalDefineH
: //---------------------------------------------------------------------------
: #endif
:
: extern String AppPath;
: extern String AppName;
:
:
:
: cpp :
: //---------------------------------------------------------------------------
: #pragma hdrstop
: #include <vcl.h>
: #include "GlobalDefine.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
:
: String AppPath = ExtractFilePath(Application->ExeName);
: String AppName = Application->ExeName;
:
: 그런데 여기서 vcl.h가 필요 하더군요.
:
: 그런데 이상한게 헤더에다가 변수를 선언해서 정의까지 넣어놓으면 vcl.h가 없이 컴파일이 되더군요
:
: 헤더 :
: extern String AppPath = ExtractFilePath(Application->ExeName);
: extern String AppName = Application->ExeName;
:
:
: 이렇게 해도 잘 돌아가더군요... vcl.h 헤더 없이요...
:
: 뭔가 다른점이 있는지 알고 싶습니다.
:
: 또 프로그램의 여러 부분에서 자주 쓰이는 변수들을 어떻게 사용하는게 좋나요?
|