2012-10-06 3 views
3

내 win32 프로그램이 하나의 주 파일로 유지하기 위해 약간 커졌습니다. 내 계획은 코드를 세 개의 파일, 즉 procs의 주 파일, 파일을 처리하는 파일 및 글꼴을 처리하는 파일로 분할하는 것입니다. 파일을 분할하는 데 문제가 있습니다. 파일을 하나의 주 파일로 작동시키기 위해 어떻게 포함시켜야하는지 잘 모릅니다. 예를 들어, 내 메인 :Win32 프로그램을 여러 파일로 나누기

#include <iostream> 
    #include <windows.h> 
    #include "resource.h" 
    #include <commctrl.h> 
    #include "hideconsole.h" 

    #define IDC_MAIN_MDI 101 
    #define IDC_MAIN_TOOL 102 
    #define IDC_MAIN_STATUS 103 

    #define IDC_CHILD_EDIT 101 

    #define ID_MDI_FIRSTCHILD 50000 

    const char szClassName[] = "MainClass";       //window class 
    const char szChildClassName[] = "ChildClass";     //child class 

    HWND g_hMDIClient = NULL; 
    HWND g_hMainWindow = NULL; 

//functions and procs for windows 

이 파일들을 어떻게 분리해야합니까? 나는 전에 시도했지만 모든 파일을 mains 변수에 액세스 할 수있게하는 것에 대한 내 머리를 감쌀 수 없었다. 아무도 내게 약간의 포인터를 줄 수 있습니까? 감사! 당신이 헤더 파일에 넣어해야 전역 변수 (비 - 상수)에 대한

답변

1

: 당신은 당신의 주요 CPP 파일에 비 통근 버전을 떠나

extern HWND g_hMDIClient = NULL; 
extern HWND g_hMainWindow = NULL; 

(그것은 어떤 파일에 있어야하지만, 수 뿐만 아니라 그들을 이동하지 않을 수도 있습니다). 단순히 상수와 매크로를 헤더 파일로 옮기면 컴파일러가 직접 그 정수를 알아낼 수 있습니다. 마지막으로이 헤더 파일을 모든 cpp 파일에 포함하십시오.

함수의 경우 헤더 파일의 선언과 코드 파일의 정의가 필요합니다.

헤더 파일 :

void myFunc(); 

코드 파일 : 답장을

void myFunc() 
{ 
    // Do something 
} 
+0

덕분에, 난 당신이 쓴 모든 .cpp 파일의 실제 기능을 제외하고 잘 작동 무엇을 따랐다. 어떤 이유로 나는 그것들을 인라인 함수로 만들면 작동하지 않을 것이다. 만약 내가 여기에 이미 정의 된 오류가 없다면 (여기에 오류가있는 곳이있다.) 인라인 함수로 선언하면 내 프로그램의 효율성이 크게 향상됩니까? 감사! –

+0

죄송합니다. 기능을 언급하는 걸 잊었습니다. 나는 그들을 다루는 방법을 추가했습니다. – CrazyCasta

관련 문제