¶ó. ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ

Dangeun ÇÁ·ÎÁ§Æ®ºÎÅÍ´Â ºñÁÖ¾ó C++ÀÌ Á¦°øÇÏ´Â ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ ±â´É(PreCompiled Header:PCH)À» Àû±ØÀûÀ¸·Î »ç¿ëÇÑ´Ù. PCH´Â ÀÚÁÖ º¯°æµÇÁö ¾Ê´Â ±ä ¼Ò½º¸¦ ¹Ì¸® ÄÄÆÄÀÏÇÏ¿© ±× °á°ú¸¦ º°µµÀÇ ÆÄÀÏ¿¡ ÀúÀåÇسõ°í, ÄÄÆÄÀÏÇÒ ¶§ ÀÌ °á°ú¸¦ »ç¿ëÇÔÀ¸·Î½á ÄÄÆÄÀÏ ¼Óµµ¸¦ ³ôÀÌ´Â ±â¹ýÀÌ´Ù. windows.h °°Àº Å« Çì´õ ÆÄÀÏÀ» ¸Å¹ø ´Ù½Ã ÄÄÆÄÀÏÇÏÀÚ¸é ÄÄÆÄÀÏ ¼Óµµ°¡ ¾öû³ª°Ô ´À¸®±â ¶§¹®¿¡ ¹Ì¸® ÄÄÆÄÀÏÇسõ´Â °ÍÀÌ´Ù.

ÄÄÆÄÀÏ·¯´Â óÀ½ ÄÄÆÄÀÏÇÒ ¶§¸¸ PCH¸¦ ¸¸µé°í ÀÌÈĺÎÅÍ´Â Çì´õ ÆÄÀÏÀÇ ³»¿ëÀÌ ¹Ù²îÁö ¾Ê´Â ÇÑ ´Ù½Ã ÄÄÆÄÀÏÇÏÁö ¾Ê°í PCHÀÇ °á°ú¸¦ »ç¿ëÇÑ´Ù. windows.h¸¦ ¿ì¸®°¡ Á÷Á¢ ÆíÁýÇÒ ÀÏÀº ¾ø±â ¶§¹®¿¡ ÃÖÃÊ ÄÄÆÄÀÏÇÒ ¶§¸¸ Á¶±Ý ´À¸®°í µÎ ¹ø°ºÎÅÍ´Â ¾ÆÁÖ ºü¸¥ ¼Óµµ·Î ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù. C/C++ ¾ð¾î´Â ´Ù¸¥ ¾ð¾î¿¡ ºñÇØ ¹®¹ý ±¸Á¶°¡ º¹ÀâÇؼ­ ÄÄÆÄÀÏ ¼Óµµ°¡ ´À¸° °ÍÀÌ Å« °áÁ¡Àε¥ ÀÌ ±â´ÉÀ¸·Î ÀÎÇØ ´ë´ÜÇÑ ¼Óµµ Çâ»ó È¿°ú¸¦ º¼ ¼ö ÀÖ´Ù. °í±Þ ÄÄÆÄÀÏ·¯¸¸ Á¦°øÇÏ´Â ¾ÆÁÖ ÁÁÀº ±â´ÉÀ̹ǷΠÀû±ØÀûÀ¸·Î È°¿ëÇϵµ·Ï ÇÏÀÚ.

AppWizard(ÀÀ¿ë ÇÁ·Î±×·¥ ¸¶¹ý»ç)·Î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé¸é PCH¸¦ »ç¿ëÇϵµ·Ï ÇÁ·ÎÁ§Æ® ¼¼ÆÃÀ» ÀÚµ¿À¸·Î ¸¸µé¾îÁִµ¥ Dangeun ÇÁ·ÎÁ§Æ®´Â ¼öµ¿À¸·Î ¸¸µç °ÍÀ̹ǷΠÀÌ ¼¼ÆÃÀ» Á÷Á¢ ÇØ¾ß ÇÑ´Ù. Áï ¾î¶² ÆÄÀϷκÎÅÍ PCH¸¦ ¸¸µé°í PCH¸¦ ¾ðÁ¦ »ç¿ëÇÒ °ÍÀÎÁö ÄÄÆÄÀÏ·¯¿¡°Ô Á¤º¸¸¦ Á¦°øÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù. stdafx.h ÆÄÀÏÀº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÇ¾î ÀÖ´Ù.

 

#define _WIN32_WINNT 0x400

#define _WIN32_WINDOWS 0x401

#include <windows.h>

#include <windowsx.h>

#include <imm.h>

#include <stdio.h>

#include <io.h>

#include <malloc.h>

#include <commctrl.h>

#include <Shlwapi.h>

#include <Shlobj.h>

#include <wininet.h>

#include "Util.h"

#include "resource.h"

#include "ApiEdit.h"

 

ÆÄÀϸíÀ» ²À stdafx.h·Î ÇÒ ÇÊ¿ä´Â ¾øÁö¸¸ ºñÁÖ¾ó C++ÀÇ AppWizard°¡ ÀÌ À̸§À» »ç¿ëÇÏ°í ÀÖÀ¸¹Ç·Î ¿ì¸®µµ ±×·¸°Ô Çϵµ·Ï ÇÏÀÚ. stdafx.h¿¡´Â ÀÌ ÇÁ·ÎÁ§Æ®¿¡¼­ »ç¿ëÇÏ´Â Çì´õ ÆÄÀÏ°ú ¾ÕÀ¸·Î »ç¿ëÇÏ°Ô µÉ Çì´õ ÆÄÀϵéÀ» ¸ðµÎ Æ÷ÇÔ½ÃÄ×´Ù. stdafx.cpp ÆÄÀÏÀº ´ÙÀ½°ú °°ÀÌ °£´ÜÇÏ°Ô ÀÛ¼ºµÇ¾î ÀÖ´Ù.

 

#include "stdafx.h"

 

ÀÌ ÆÄÀÏÀº ¾Æ¹«°Íµµ ÇÏÁö ¾ÊÀ¸¸ç ¿À·ÎÁö stdafx.h¸¸ ÀÎŬ·çµåÇÏ°í Àִµ¥ ÄÄÆÄÀÏ·¯°¡ ÀÌ ÆÄÀÏÀ» ÄÄÆÄÀÏÇÒ ¶§ PCH¸¦ ¸¸µéµµ·Ï ÇÒ °ÍÀÌ´Ù. ¼Ö·ç¼Ç Ž»ö±âÀÇ stdafx.cpp ÆÄÀÏ(stdafx.h°¡ ¾Æ´Ô)¿¡¼­ Æ˾÷¸Þ´º¸¦ ¿­°í ¼Ó¼º Ç׸ñÀ» ¼±ÅÃÇغ¸ÀÚ. ¿ÞÂÊÀÇ ¿É¼Ç Æ®¸®¿¡¼­ C/C++/¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ Ç׸ñÀ» ¼±ÅÃÇϸé PCH °ü·Ã ¿É¼ÇÀÌ ³ªÅ¸³­´Ù.

¡®¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ ¸¸µé±â/»ç¿ë¡¯ ¿É¼ÇÀÌ ±×¸²°ú °°ÀÌ ¡®¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ ¸¸µé±â/(Yc)¡¯·Î ¼±ÅõǾî ÀÖ´Ù. ÀÌ ¿É¼ÇÀÌ ÁöÁ¤µÇ¸é stdafx.cpp¸¦ ÄÄÆÄÀÏÇÒ ¶§ ÀÌ ÆÄÀÏ¿¡ ÀÎŬ·çµåµÈ ¸ðµç Çì´õ ÆÄÀÏÀ» ÄÄÆÄÀÏÇÏ¿© PCH ÆÄÀÏÀ» ¹Ì¸® ¸¸µé¾î ³õ°Ô µÈ´Ù. stdafx.cpp´Â stdafx.h¸¦ Æ÷ÇÔÇÏ°í ÀÖ°í stdafx.h¿¡´Â ÀÚÁÖ º¯ÇÏÁö ¾Ê´Â ¸ðµç Çì´õ ÆÄÀÏÀÌ Æ÷ÇԵǾî ÀÖÀ¸¹Ç·Î ÀÌ Çì´õ ÆÄÀϵéÀÌ ¹Ì¸® ÄÄÆÄÀ쵃 °ÍÀÌ´Ù.

ApiEdit.cpp¿Í Dangeun.cpp, Util.cpp µî stdafx.cpp¸¦ Á¦¿ÜÇÑ ³ª¸ÓÁö ¸ðµâµéÀÇ ¼Ó¼ºÃ¢À» ¶ç¿ö ÀÌ ¿É¼ÇÀ» È®ÀÎÇغ¸¸é ¡®¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ »ç¿ë/(Yu)¡¯ ¿É¼ÇÀÌ ¼±ÅõǾî ÀÖ´Ù. Áï ÀÌ ÆÄÀϵéÀ» ÄÄÆÄÀÏÇÒ ¶§´Â óÀ½ºÎÅÍ ÄÄÆÄÀÏÇÏÁö ¸»°í stdafx.h·ÎºÎÅÍ ¸¸µé¾îÁø PCHÆÄÀÏÀ» ÂüÁ¶Ç϶ó´Â ¶æÀÌ´Ù.

ÀÌ·¸°Ô ¼³Á¤Çسõ°í ÄÄÆÄÀÏÇϸé windows.h, commctrl.h, stdio.h µîÀÇ Å« Çì´õ ÆÄÀÏÀÌ µü ÇÑ ¹ø¸¸ ÄÄÆÄÀϵǹǷΠÄÄÆÄÀÏ ¼Óµµ°¡ ¾öû³ª°Ô »¡¶óÁö°Ô µÈ´Ù. ¾ÕÀ¸·Î´Â ÇÊ¿äÇÑ Çì´õ ÆÄÀϵéÀ» ¸ðµÎ stdafx.h¿¡¼­ ÀÎŬ·çµåÇÏ°í ³ª¸ÓÁö ¸ðµâµéÀº stdafx.h¸¸ ÀÎŬ·çµåÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô Çϸé Çì´õ ÆÄÀÏÀÌ ¿©·¯ ¹ø ÀÎŬ·çµåµÇÁö ¾Ê¾Æ ÁÁ°í Çì´õ ÆÄÀϳ¢¸®ÀÇ Æ÷ÇÔ ¼ø¼­¿¡ ½Å°æ¾µ ÇÊ¿äµµ ¾ø°í PCH ±â´ÉÀ» È°¿ëÇϹǷΠÄÄÆÄÀÏ ¼Óµµµµ »¡¶óÁö°í ¿©·¯ ¸ð·Î ÇØÇÇÇØÁø´Ù. ApiEdit.cpp´Â ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ ±â´ÉÀ» »ç¿ëÇϱâ À§ÇØ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤µÇ¾ú´Ù.

 

//#define _WIN32_WINNT 0x400

//#define _WIN32_WINDOWS 0x401

//#include <windows.h>

//#include <windowsx.h>

//#include <imm.h>

//#include <stdio.h>

//#include <io.h>

//#include <malloc.h>

//#include <commctrl.h>

//#include <Shlwapi.h>

//#include <Shlobj.h>

//#include <wininet.h>

//#include <stdio.h>

//#include "ApiEdit.h"

#include "stdafx.h"

 

stdafx.h¿¡ ApiEdit.cpp¸¦ ÄÄÆÄÀÏÇϱâ À§ÇÑ ¸ðµç Çì´õ°¡ ´Ù Æ÷ÇԵǾî Àֱ⠶§¹®¿¡ ´Ù¸¥ Çì´õ ÆÄÀÏÀº Æ÷ÇÔ½Ãų ÇÊ¿ä°¡ ¾øÀ¸¸ç stdafx.h¸¸ Æ÷ÇÔÇÏ¸é µÈ´Ù. ¿ø·¡ ÀÖ´ø #include ¹®Àº Áö¿ìÁö ¾Ê¾Ò°í ÁÖ¼® 󸮸¸ Çصξú´Ù. ¿Ö³ÄÇϸé ApiEdit´Â ÀÌ ÇÁ·ÎÁ§Æ®»Ó¸¸ ¾Æ´Ï¶ó PCH¸¦ »ç¿ëÇÏÁö ¾Ê´Â ´Ù¸¥ ÇÁ·ÎÁ§Æ®¿¡µµ »ç¿ëµÉ ¼ö ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù. Çì´õ ÆÄÀÏ ¿Ü¿¡ ApiEdit´Â ÀüÇô ÆíÁýÇÏÁö ¾Ê¾ÒÀ¸¸ç ApiEditTestÀÇ °Í°ú µ¿ÀÏÇÏ´Ù.