JHB의 프로그래밍 삽질기

전처리기에 대하여 본문

PROGRAMMING/Win/MFC

전처리기에 대하여

roter 2008.11.13 14:35



프로그래밍 되어있는 소스들을 건들다 보면

#ifdef
#ifndef
#endif
#include
#define

이런것들을 볼 수 있는데~~ '전처리기'라고 하죠~
#include와 #define은 모두 아실테고..

나머지 세개를 볼까요? 너무나 쉽습니다

#ifdef STAR //STAR가 define되어 있다면
#define A B
#endif

#ifndef STAR //STAR가 define되어있지 않다면
#define A C
#endif

이게 다에요~ #endif는 반드시 #ifdef또는 #ifndef와 함께 쓰입니다.
stdafx.h를 보면

#define WIN32_LEAN_AND_MEAN  // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다.
// Windows 헤더 파일:
#include <windows.h>

이런 부분이 있는데, WIN32_LEAN_AND_MEAN을 정의해 놓았기 때문에 아래와 같은 일이 일어납니다.

windows.h 소스내용 중

#ifndef WIN32_LEAN_AND_MEAN
#include <cderr.h>
#include <dde.h>
#include <ddeml.h>
#include <dlgs.h>
#ifndef _MAC
#include <lzexpand.h>
#include <mmsystem.h>
#include <nb30.h>
#include <rpc.h>
#endif
#include <shellapi.h>
#ifndef _MAC
#include <winperf.h>
#include <winsock.h>
#endif
#ifndef NOCRYPT
#include <wincrypt.h>
#include <winefs.h>
#include <winscard.h>
#endif

#ifndef NOGDI
#ifndef _MAC
#include <winspool.h>
#ifdef INC_OLE1
#include <ole.h>
#else
#include <ole2.h>
#endif /* !INC_OLE1 */
#endif /* !MAC */
#include <commdlg.h>
#endif /* !NOGDI */
#endif /* WIN32_LEAN_AND_MEAN */

이런 부분이 있는데, WIN32_LEAN_AND_MEAN가 정의되어 있지 않으면 이러이러한 것들을 include하라~ 이런 뜻인것이죠~~! OPENFILENAME 등을 사용할려면 WIN32_LEAN_AND_MEAN을 주석처리 해야 할 거에요~~

0 Comments
댓글쓰기 폼