- °³¿ä
- Precompiled Header
- ¼Ò½º Æ÷¸Ë
- ´Ü°èº° ÀÛ¾÷
- Á» ´õ ³ªÀº ¹æ¹ý
- ÁÖÀÇ»çÇ×
- const º¯¼ö°¡ µé¾î°¡ÀÖ´Â Çì´õ¸¦ ¹Ì¸® ÄÄÆÄÀÏÇÏÁö ¸»¶ó
- ÅÛÇø´ Çì´õ¸¦ ¹Ì¸® ÄÄÆÄÀÏÇÏÁö ¸»¶ó
- ÄÄÆÄÀÏ·¯ ÁøÇà âÀ» ÁÖ½ÃÇ϶ó
- °ø¿ë Çì´õ¸¦ ¸¸µé¾ú´Ù°í ÇØ¼ ±âÁ¸ÀÇ include ¹®À» »èÁ¦ÇÏÁö ¸»¶ó
- ÇÁ·ÎÁ§Æ®¸¶´Ù ´Ù¸¥ ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ À̹ÌÁö¸¦ »ç¿ëÇ϶ó
- ÇÁ·ÎÁ§Æ® µð·ºÅ丮 ³»ºÎÀÇ #00 ÆÄÀϵéÀÇ °¹¼ö¸¦ ÁÖ½ÃÇ϶ó
- ÄÄÆÄÀÏ·¯ ¿É¼Ç
- ¸µÅ©
1 °³¿ä
C++ BuilderÀÇ ºôµå ¼Óµµ¸¦ ºü¸£°Ô ÇÏ´Â ¹æ¹ýµéÀÌ´Ù.
2 Precompiled Header
ºôµå ¼Óµµ¸¦ ºü¸£°Ô Çϱâ À§Çؼ °¡Àå ¿ì¼±ÀûÀ¸·Î ÇØ¾ßÇÒ ÀÏÀÌ´Ù.
2.1 ¼Ò½º Æ÷¸Ë
ºô´õ¿¡¼´Â ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ(ÀÌÇÏ, PCH)¸¦ À§ÇØ #pragma hdrstop ±¸¹®À» »ç¿ëÇÑ´Ù. ±âº»ÀûÀ¸·Î ÆûÀ» Çϳª »ý¼ºÇϸé, ¼Ò½º ÆÄÀÏ ¸Ç À§ÂÊ¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀÌ ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
#include <vcl.h>
#pragma hdrstop
PCH¸¦ ¾²·Á¸é ¸ðµç ¼Ò½º ÆÄÀÏ¿¡¼, #pragma hdrstop ±¸¹® À§¿¡ ³ª¿À´Â Çì´õ ÆÄÀϵéÀÌ °°¾Æ¾ß ÇÑ´Ù. Åä¾¾ Çϳª Ʋ¸®¸é ¾È µÈ´Ù.
Ʋ¸° ¿¹Á¦µé
//-------------------- //--------------------
// UNIT1.CPP // UNIT2.CPP
#include <stdio.h> #include <iostream.h>
#pragma hdrstop #pragma hdrstop
//-------------------- //--------------------
// UNIT1.CPP // UNIT2.CPP
#include <stdio.h> #include <stdio.h>
#include <iostream.h> #pragma hdrstop
#pragma hdrstop
//-------------------- //--------------------
// UNIT1.CPP // UNIT2.CPP
#include <stdio.h> #pragma hdrstop
#pragma hdrstop #include <stdio.h>
¿Ã¹Ù¸¥ ¿¹Á¦µé
//-------------------- //--------------------
// UNIT1.CPP // UNIT2.CPP
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <iostream.h> #include <iostream.h>
#include <windows.h> #include <windows.h>
#include "unit1.h" #include "unit1.h"
#pragma hdrstop #pragma hdrstop
//-------------------- //--------------------
// UNIT1.CPP // UNIT2.CPP
#define INC_VCLDB_HEADERS #define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS #define INC_VCLEXT_HEADERS
#include <vcl.h> #include <vcl.h>
#pragma hdrstop #pragma hdrstop
#include "unit1.h" #include "unit2.h"
2.2 ´Ü°èº° ÀÛ¾÷
PCH¸¦ »ç¿ëÇϱâ À§ÇÑ °úÁ¤À» ¼ø¼´ë·Î ¼³¸íÇÏÀÚ¸é ´ÙÀ½°ú °°´Ù.
- À§¿¡¼ ¼³¸íÇÑ °Íó·³ ¸ðµç ¼Ò½º ÆÄÀÏÀ» ¼öÁ¤ÇÑ´Ù.
- ÇÁ·ÎÁ§Æ® ¿É¼Ç --> ÄÄÆÄÀÏ·¯ âÀ¸·Î °£´Ù.
- ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ Ç׸ñ¿¡¼ Cache pre-comiled headers ¿É¼ÇÀ» ¼±ÅÃÇÑ´Ù.
- ÆÄÀÏ À̸§ÀÌ ±âº»ÀûÀ¸·Î $(BCB)\lib\vcl60.csm°ú °°ÀÌ µÇ¾î ÀÖÀ» ÅÙµ¥, À̰ÍÀ» ±×³É ³öµÎ¸é, ¸ðµç ÇÁ·ÎÁ§Æ®µéÀÌ °°Àº PCH À̹ÌÁö¸¦ »ç¿ëÇÏ°Ô µÈ´Ù. ´ç¿¬È÷ ÀÌ·¯¸é ¾È µÇ¹Ç·Î, PCH.csm°ú °°ÀÌ µð·ºÅ丮 ¾ø´Â À̸§À¸·Î ¹Ù²ãÁØ´Ù. µð·ºÅ丮 À̸§ÀÌ ¾øÀ¸¸é ÇöÀç ÇÁ·ÎÁ§Æ® µð·ºÅ丮¿¡ PCH À̹ÌÁö°¡ »ý¼ºµÈ´Ù.
- º¯°æ »çÇ×À» ÀúÀåÇϰí, ÄÄÆÄÀÏÇÑ´Ù.
2.3 Á» ´õ ³ªÀº ¹æ¹ý
Á» ´õ À¯¿¬ÇÏ°Ô PCH¸¦ »ç¿ëÇϱâ À§Çؼ´Â PCH¸¦ À§ÇÑ Çì´õ ÆÄÀÏÀ» Çϳª ¸¸µé¾î¼, ¼Ò½º ÆÄÀÏ¿¡¼´Â ±× Çì´õ ÆÄÀϸ¸À» Æ÷ÇÔ½ÃŰ´Â °ÍÀÌ ÁÁ´Ù.
PCH.h
#ifndef __PCH_H__
#define __PCH_H__
#include <vcl.h>
#include <windows.h>
...»ý·«...
#endif
¼Ò½º ÆÄÀϵé
//-------------------- //--------------------
// UNIT1.CPP // UNIT2.CPP
#include "PCH.h" #include "PCH.h"
#pragma hdrstop #pragma hdrstop
#include "unit1.h" #include "unit2.h"
2.4 ÁÖÀÇ»çÇ×
2.4.1 const º¯¼ö°¡ µé¾î°¡ÀÖ´Â Çì´õ¸¦ ¹Ì¸® ÄÄÆÄÀÏÇÏÁö ¸»¶ó
const AnsiString strError = "An Error Occurred!";
Çì´õ ÆÄÀÏ¿¡ À§¿Í °°Àº ±¸¹®ÀÌ µé¾î°¡ÀÖ´Â °æ¿ì, ÄÄÆÄÀÏ·¯°¡ ÇØ´ç Çì´õ ÆÄÀÏÀ» ¹Ì¸® ÄÄÆÄÀÏÇÒ ¼ö°¡ ¾ø´Ù. ±×·¯¹Ç·Î ´Ù¸¥ Çì´õ ÆÄÀÏÀ» Çϳª µû·Î ¸¸µé¾î¼, const º¯¼ö ¼±¾ðÀ» ±× ÆÄÀÏ·Î ¿Å°Ü¶ó.
2.4.2 ÅÛÇø´ Çì´õ¸¦ ¹Ì¸® ÄÄÆÄÀÏÇÏÁö ¸»¶ó
ÀÌ´Â Á¤È®ÇÑ ±Ù°Å°¡ ÀÖ´Â °ÍÀº ¾Æ´Ï°í, °æÇè¿¡ ÀÇÇÑ °ÍÀÌ´Ù. STL °°Àº ÅÛÇø´ Çì´õµéÀ» ¹Ì¸® ÄÄÆÄÀÏÇÏ´Â °æ¿ì, ¾Æ¹«·± °æ°í³ª ¿¡·¯ ¾øÀÌ ¸Å¹ø ºôµåÇÒ ¶§¸¶´Ù PCH À̹ÌÁö°¡ »õ·Î »ý¼ºµÇ´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ·± °æ¿ì ÅÛÇø´ Çì´õ¸¦ PCH Ç׸ñ¿¡¼ Á¦°ÅÇ϶ó.
2.4.3 ÄÄÆÄÀÏ·¯ ÁøÇà âÀ» ÁÖ½ÃÇ϶ó
¾ó¸¶³ª ¸¹Àº Çì´õ ÆÄÀϵéÀ» ¹Ì¸® ÄÄÆÄÀÏÇÏ´À³Ä¿¡ µû¶ó ´Ù¸£°ÚÀ¸³ª, ÃÖÃÊ·Î ÇÁ·ÎÁ§Æ®¸¦ ÄÄÆÄÀÏÇÏ´Â °æ¿ì, ¶óÀÎ ¼ö°¡ 100000~500000 µÇ´Â ¼Ò½º ÆÄÀÏÀÌ ÀÖÀ» °ÍÀÌ´Ù. ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ°¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÑ´Ù¸é, ´ÙÀ½ ÄÄÆÄÀÏÇÒ ¶§ºÎÅÍ´Â ¶óÀÎ ¼ö°¡ ÈξÀ Àû¾îÁø´Ù. ¸¸ÀÏ ÄÄÆÄÀÏÇÒ ¶§¸¶´Ù ¶óÀÎ ¼ö°¡ óÀ½°ú °°Àº Á¤µµ·Î ³ª¿Â´Ù¸é, PCH°¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏÁö ¾ÊÀ½À» ÀǹÌÇÑ´Ù.
2.4.4 °ø¿ë Çì´õ¸¦ ¸¸µé¾ú´Ù°í ÇØ¼ ±âÁ¸ÀÇ include ¹®À» »èÁ¦ÇÏÁö ¸»¶ó
PCH °ø¿ë Çì´õ ÆÄÀÏ¿¡ ¹º°¡ ¸¹ÀÌ ³ÖÀ»¼ö·Ï ÄÄÆÄÀÏÀº »¡¶óÁö´Â °Ô »ç½ÇÀÌ´Ù. ±×·¡¼ °ø¿ë Çì´õ ÆÄÀÏ¿¡´Ù ¿Â°® ÄÄÆ÷³ÍÆ® Çì´õµéÀ» ´Ù Áý¾î³ÖÀ» ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ´ÜÁö ¸í½ÉÇÒ Á¡Àº °ø¿ë Çì´õ ÆÄÀÏ¿¡ Çì´õµéÀ» Áý¾î³Ö¾ú´Ù°í ÇØ¼, ±âÁ¸ÀÇ ¼Ò½º ÆÄÀÏ¿¡ ÀÖ´ø Çì´õµéÀ» Á¦°ÅÇÒ ÇÊ¿ä´Â ¾ø´Ù´Â Á¡ÀÌ´Ù.
ÄÄÆ÷³ÍÆ® Çì´õ °°Àº °æ¿ì, ¼Ò½º ÆÄÀÏ¿¡¼ Á¦°ÅÇØµµ ÄÄÆÄÀÏÀ» ½ÃÀÛÇϸé ÄÄÆÄÀÏ·¯°¡ ÀÚµ¿À¸·Î Á¦°ÅÇÑ Çì´õ¸¦ Ãß°¡Çعö¸®´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÄÄÆ÷³ÍÆ® Çì´õ°¡ ¾Æ´Ï¶ó ÇØµµ, ³ªÁß¿¡ °ø¿ë Çì´õ ÆÄÀÏ¿¡¼ ±× Çì´õ ÆÄÀÏÀ» Á¦°ÅÇϸé, ÀÏÀÏÀÌ ±× Çì´õ¸¦ »ç¿ëÇÏ´Â ¼Ò½º¸¦ ã¾Æ¼ ¶Ç Áý¾î³Ö¾îÁà¾ß ÇÑ´Ù. ±×·¯¹Ç·Î ¾ÖÃÊ¿¡ Á¦°ÅÇÏÁö ¸»¶ó. Çì´õ °¡µå¸¸ ÀÖÀ¸¸é º°·Î »ó°ü¾øÀ¸´Ï±î.
2.4.5 ÇÁ·ÎÁ§Æ®¸¶´Ù ´Ù¸¥ ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ À̹ÌÁö¸¦ »ç¿ëÇ϶ó
À§¿¡¼µµ Àá½Ã ¾ð±ÞÇßÁö¸¸, »õ·Î ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ °æ¿ì, ±âº»ÀûÀ¸·Î PCH À̹ÌÁö°¡ $(BCB)\lib µð·ºÅ丮¿¡ °°Àº À̸§À¸·Î »ý¼ºµÈ´Ù. ¹Ýµå½Ã ÇÁ·ÎÁ§Æ®¸¶´Ù ´Ù¸¥ À̹ÌÁö¸¦ »ç¿ëÇϵµ·Ï º¯°æÇÏÀÚ.
2.4.6 ÇÁ·ÎÁ§Æ® µð·ºÅ丮 ³»ºÎÀÇ #00 ÆÄÀϵéÀÇ °¹¼ö¸¦ ÁÖ½ÃÇ϶ó
PCH¸¦ Á¤»óÀûÀ¸·Î ¼³Á¤ÇÑ °æ¿ì, ÄÄÆÄÀÏ·¯´Â ÇϳªÀÇ CSM ÆÄÀϰú #00 ÆÄÀÏÀ» »ý¼ºÇÑ´Ù. ¹º°¡ À߸ø µ¹¾Æ°¡´Â °æ¿ì¿¡´Â #00, #01, #02 ÀÌ·± ½ÄÀ¸·Î ÆÄÀÏÀÌ ´Ã¾î³´Ù. ÀÌ´Â PCH À̹ÌÁö°¡ ¿©·¯ °¡Áö¶ó´Â Àǹ̴Ù. Áï #pragma hdrstop ÀºÎºÐ¿¡ ÀÖ´Â include ±¸¹®ÀÌ ´Ù¸¥ ¼Ò½º ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù´Â Àǹ̴Ù. ÀÌ·± ÆÄÀϵéÀ» ã¾Æ¼ ¼öÁ¤Ç϶ó.
3 ÄÄÆÄÀÏ·¯ ¿É¼Ç
PCH¿¡ ºñÇØ¼´Â È¿°ú°¡ ¹Ì¹ÌÇÏ´Ù.
- ±âº»ÀûÀ¸·Î Build ¸Þ´ºº¸´Ù´Â Make ¸Þ´º¸¦ ÀÌ¿ëÇØ¾ß ÇÑ´Ù. ³Ê¹« ±âº»Àΰ¡?
- µð¹ö±ëÀÌ ÇÊ¿ä¾ø´Â ºôµåÀÏ °æ¿ì, µð¹ö±× ±â´ÉÀ» ¾ø¾Ö¸é ºôµå°¡ Á» »¡¶óÁø´Ù.
- Project Option --> Compiler ÅÇÀ¸·Î °¡¼ ¸±¸®Áî ¸ðµå¸¦ ¼±ÅÃÇÑ´Ù.
- Project Option --> Linker ÅÇÀ¸·Î °¡¼ Use debug libraries Ç׸ñÀ» ºñȰ¼ºÈ½ÃŲ´Ù.
- ºÎµ¿ ¼Ò¼öÁ¡ ¿¬»êÀÌ ÇÊ¿ä¾ø´Â °æ¿ì, Project Option --> Advanced Compiler ÅÇÀ¸·Î °¡¼ Floating point ±×·ìÀÇ None Ç׸ñÀ» Ȱ¼ºÈ½Ã۸é, ºÎµ¿ ¼Ò¼öÁ¡ ¶óÀ̺귯¸®¸¦ ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔ½ÃŰÁö ¾ÊÀ¸¹Ç·Î Á» »¡¶óÁø´Ù.
4 ¸µÅ©
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)