ÀÌ ÆÁÀº ´ãºñ´Ô(õ¸®¾È FREKBS)´ÔÀÌ 98³â 12¿ù 14ÀÏ¿¡ õ¸®¾È ÇÁ·Î±×·¡¸ÓÆ÷·³¿¡ ¿Ã¸®½Å °ÍÀÔ´Ï´Ù.
´ãºñ´ÔÀ¸·ÎºÎÅÍ´Â ÀüÁ¦ÇÏ¿© ¿Ã¸®´Â µ¥ ´ëÇØ Çã¶ôÀ» ¹Þ¾Ò½À´Ï´Ù.
ÁÁÀº Á¤º¸¸¦ °øÀ¯Çϵµ·Ï Çã¶ôÇØÁֽŠ´ãºñ´Ô²² °¨»çµå¸³´Ï´Ù.
-----------------------------------------------------------------------
¾È³çÇϼ¼¿ä! ´ãºñÀÔ´Ï´Ù.
º» ¹®¼´Â Á¦°¡ °¡Áö°í Àִ å°ú Á¦°øµÈ µµ¿ò¸»À» ±âÃÊ·Î ÇÏ¿© ÀÛ¼ºµÇ¾îÁ³½À´Ï´Ù.
Á¦°¡ ¿µ¾î ½Ç·ÂÀÌ ºÎÁ·ÇÑ Å¿À¸·Î ³»¿ëÀÇ ÀÌÇØ°¡ ¾à°£(?)Àº Èûµé°Å³ª, ¹®¸Æ»óÀÇ
¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Ȥ ÀÌ·± ³»¿ëÀ» ¹ß°ßÇϽðųª, À߸øµÈ ³»¿ëÀ»
¹ß°ßÇϽðųª, Ãß°¡µÇ¾îÁ®¾ß ÇÒ ³»¿ëÀ» ¹ß°ßÇÏ½Å´Ù¸é ¸ÞÀÏ ÁÖ½Ã¸é °¨»çÇϰڽÀ´Ï´Ù.
º¸³»Áֽг»¿ëÀº °ËÅä ÈÄ ¹®¼¿¡ Àç¹Ý¿µÇÏ¿© ¿Ã¸®µµ·Ï ÇϰڽÀ´Ï´Ù.
frekbs@chollian.net
¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬
¼±Çà󸮱âÁßÀÇ ÇϳªÀÎ pragma¿¡ °üÇÑ »ç¿ë¹ýÀ» Á¤¸®ÇÏ¿© ¿Ã¸³´Ï´Ù.
¹®¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
¦®¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯
¦#pragma directive-name¦
¦±¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦°
#pragma´Â À̰ÍÀ» Áö¿øÇÏ´Â ´Ù¸¥ compiler¿¡¼ ¹æÇذ¡ ¾øÀÌ C++ Builder¿¡¼ ¿øÇÏ´Â
Áö½Ã¾î¸¦ Á¤ÀÇÇÒ ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù. ¸¸ÀÏ Áö½Ã¸íÀ» ÀνÄÇÏÁö ¸øÇÑ´Ù¸é ¿¡·¯ ¶Ç´Â
°æ°í ¸Þ¼¼Áö¸¦ ¼ö¹ÝÇÏÁö ¾Ê°í¼ #pragmaÀÇ Áö½Ã¸¦ ¹«½ÃÇÏ°Ô µË´Ï´Ù.
Borland C++ Builder¿¡¼ Áö¿øÇÏ´Â #pragmaÁö½Ã¾î´Â ¸ðµÎ 18°¡Áö°¡ ÀÖ½À´Ï´Ù.
ÀÌÁ¦ºÎÅÍ ±×°ÍµéÀ» Çϳª Çϳª »ìÆìº¸±â·Î ÇϰڽÀ´Ï´Ù.
1. #pragma anon_struct
. »ç¿ë¹ý
#pragma anon_struct on
#pragma anon_struct off
. Class¿¡ À͸íÀÇ ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÏ¿© compileÇϴ°ÍÀ» Çã¶ôÇÒ °ÍÀÎÁö¸¦
Áö½ÃÇÕ´Ï´Ù. À͸íÀ̶õ tag¸¦ °®Áö ¾Ê´Â´Ù´Â°ÍÀ» ÀǹÌÇÕ´Ï´Ù.
ex)
#pragma anon_struct on
struct S {
int i;
struct { // ÀÍ¸í±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÑ´Ù.
int j ;
float x ;
};
class { // À͸í Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ´Ù.
public:
long double ld;
};
S() { i = 1; j = 2; x = 3.3; ld = 12345.5;}
};
#pragma anon_struct off
void main() {
S mystruct;
mystruct.x = 1.2; // Æ÷ÇÔµÈ data¿¡ °ªÀ» ÇÒ´çÇÑ´Ù.
}
2. #pragma argsused
. argsused ÇÁ¶ó±×¸¶´Â ÇÔ¼ö Á¤ÀÇ »çÀÌ¿¡¼¸¸ Çã¿ëµÇ°í ¹Ù·Î ´ÙÀ½ ÇÔ¼ö¿¡¸¸
¿µÇâÀ» ¹ÌÄ¡¸ç °æ°í ¸Þ¼¼Áö¸¦ disable½Ãŵ´Ï´Ù.
ÀÌ pragma¸¦ »ç¿ëÇÏÁö ¾ÊÀº °æ¿ì »ç¿ëµÇÁö ¾ÊÀº argument°¡ ÀÖÀ¸¸é
"Parameter name is never used in function func-name"
¶ó´Â °æ°í ¸Þ¼¼Áö¸¦ Ç¥½ÃÇÏ°Ô µË´Ï´Ù.
ex)
#pragma argsused
void __fastcall TImageForm::FileEditKeyPress(TObject* Sender, Char &Key)
{ if (Key == 0x13) {
FileListBox1->ApplyFilePath(FileEdit->Text);
Key = 0x0;
}
}
À§ÀÇ ¿¹¿¡¼´Â ÇÔ¼ö³»¿¡¼ Sender¶ó´Â Àμö°¡ »ç¿ëµÇÁö ¾Ê¾ÒÁö¸¸ °æ°í ¸Þ¼¼Áö°¡
Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù.
3. #pragma codeseg
. »ç¿ë¹ý
#pragma codeseg <seg_name> <"seg_class"> <group>
. codeseg ÇÁ¶ó±×¸¶´Â ÇÔ¼öµéÀ» À§Ä¡½Ãų group, class ¶Ç´Â segmentÀÇ À̸§À»
ÁÙ¼ö ÀÖµµ·Ï Áö½ÃÇÕ´Ï´Ù. ¸¸ÀÏ option¾øÀÌ »ç¿ëÇÏ¿´´Ù¸é ÇÔ¼öÀÇ ¹èÄ¡¸¦ À§Çؼ
default code segment°¡ »ç¿ëµÇ¾îÁú°ÍÀÔ´Ï´Ù. °á±¹ ÀÌ pragma¸¦ »ç¿ëÇÏÁö ¾Ê´Â
°æ¿ì¿Í µ¿ÀÏÇÑ °á°ú¸¦ °¡Á®¿É´Ï´Ù.
4. #pragma comment
. »ç¿ë¹ý
#pragma comment (comment type, "string")
. comment ÇÁ¶ó±×¸¶´Â Ãâ·ÂµÇ¾îÁö´Â file¿¡ ÁÖ¼®À» ±â·Ï½Ãų°ÍÀ» Áö½ÃÇÕ´Ï´Ù.
comment type¿¡ ¿Ã¼ö ÀÖ´Â °ªµéÀº ´ÙÀ½ÁßÀÇ Çϳª°¡ µÉ°ÍÀÔ´Ï´Ù.
* exestr
linker°¡ ".OBJ" file¿¡ stringÀ» ±â·ÏÇÕ´Ï´Ù. ÀÌ·¸°Ô ±â·ÏµÈ stringÀº
½ÇÇàÆÄÀϳ»ºÎ¿¡ ±â·ÏµÇ¾îÁö¸ç, À̰ÍÀº °áÄÚ ¸Þ¸ð¸®·Î loadµÇÁö ¾Ê½À´Ï´Ù.
ÇÏÁö¸¸ Àû´çÇÑ ÆÄÀÏ °Ë»ö À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¿© ½ÇÇàÆÄÀÏ¿¡¼ stringÀ»
ã¾Æº¼ ¼ö ÀÖ½À´Ï´Ù.
* lib
".OBJ" file¿¡ ÁÖ¼®ÀÇ ³»¿ëÀ» ±â·ÏÇÕ´Ï´Ù.
library¿¡ »õ·Î¿î moduleÀ» Ãß°¡ÇÏ´Â °æ¿ì ¿¡¸¸ comment ÇÁ¶ó±×¸¶¸¦ »ç¿ëÇÏ¿©
linker¿¡°Ô °á°ú file¿¡ ¸í½ÃÇÒ ¼ö ÀÖµµ·Ï Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù½Ã ¸»Çϸé
±âÁ¸¿¡ ÀÛ¼ºµÇ¾îÁø module¿¡´Â comment ÇÁ¶ó±×¸¶¸¦ »ç¿ëÇÏ¿© stringÀ» Ãß°¡
½Ãų¼ö ¾ø½À´Ï´Ù. »õ·Ó°Ô library¸¦ ÀÛ¼ºÇÑ´Ù¸é ¿¹¿ÜÀÏ ¼ö ÀÖ°ÚÁö¿ä.
linker´Â ÃÖÁ¾ÀÇ library¿¡¼ string¿¡ ¸í½ÃµÈ library module À̸§À» Æ÷ÇÔ
ÇÕ´Ï´Ù. ¿©·¯°³ÀÇ moduleµéµµ À̸§Áö¾îÁú ¼ö ÀÖÀ¸¸ç À̸§À» ¸¸µé±â À§ÇÏ¿©
linkeµÇ¾îÁý´Ï´Ù.
* user
compiler´Â ".OBJ" file¿¡ stringÀ» ±â·ÏÇÕ´Ï´Ù. ÇÏÁö¸¸ linker¿¡ ÀÇÇØ
stringÀº ¹«½ÃµÇ¾îÁý´Ï´Ù. object ÆÄÀÏ¿¡¸¸ ±× ³»¿ëÀÌ ³²°Ô µË´Ï´Ù.
5. #pragma exit
. »ç¿ë¹ý
#pragma startup function-name <priority>
#pragma exit function-name <priority>
. ÀÌµé µÎ ÇÁ¶ó±×¸¶´Â ÇÁ·Î±×·¥ÀÌ ÇÁ·Î±×·¥ ½Ãµ¿½Ã(mainÀÌ È£ÃâµÇ±â Àü) È£Ãâ
µÇ¾î¾ß ÇÒ ÇÔ¼ö¿Í ÇÁ·Î±×·¥ Å»Ãâ(ÇÁ·Î±×·¥ÀÌ _exit¸¦ ÅëÇØ Á¾·áÇϱ⠹ٷΠÀü)
À» ¸í½ÃÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ¸í½ÃµÈ function-nameÀº ¹Ýµå½Ã Àμö¸¦ ÃëÇÏÁö
¾Ê°í void¸¦ returnÇÏ´Â ¹Ì¸® ¼±¾ðµÈ ÇÔ¼ö¿©¾ßÇÕ´Ï´Ù. ´Ù½Ã ¸»ÇÏ¸é ´ÙÀ½°ú
°°ÀÌ ¼±¾ðµÉ ¼ö ÀÖ½À´Ï´Ù.
void func (void);
priority´Â ¹Ýµå½Ã 64-255ÀÇ ¹üÀ§ ³»¿¡ ÀÖ´Â Á¤¼ö¿©¾ßÇϸç ÃÖ»óÀÇ ¿ì¼±±ÇÀº
0ÀÔ´Ï´Ù. 0-63»çÀÌÀÇ priority´Â C library¿¡¼ »ç¿ëÇϹǷΠ»ç¿ëÀÚ°¡ À̸¦
»ç¿ëÇØ¼´Â ¾ÈµË´Ï´Ù. ÃÖ»óÀ§ ¿ì¼±±ÇÀ» °¡Áø ÇÔ¼ö´Â ½Ãµ¿½Ã¿¡ ¸Ç ¸ÕÀú È£Ãâ
µÇ°í Å»Ãâ½Ã¿¡ ¸Ç ¸¶Áö¸·À¸·Î È£ÃâµË´Ï´Ù. ¿ì¼±±ÇÀ» ¸í½ÃÇØ ÁÖÁö ¾ÊÀ» °æ¿ì
±âº»ÀûÀ¸·Î 100ÀÇ ¿ì¼±±ÇÀ» °®°Ô µË´Ï´Ù. pragma startup ¶Ç´Â exit¿¡ »ç¿ëµÈ
ÇÔ¼ö¸íÀº ¹Ýµå½Ã ÇÁ¶ó±×¸¶ ¶óÀο¡ µµ´ÞÇϱâ Àü¿¡ Á¤ÀÇ(¶Ç´Â ¼±¾ð)µÇ¾î¾ßÇÔ¿¡
ÁÖÀÇÇϽʽÿä.
ex)
#include
void startFunc(void)
{
printf("Startup Function.\n");
}
#pragma startup startFunc 64 //¿ì¼±±Ç 64·Î ½Ãµ¿½Ã¿¡ ¸Ç ¸ÕÀú È£ÃâµË´Ï´Ù.
void exit Func(void)
{
pirntf("Wrapping up execution.\n");
}
#pragma exit exitFunc //±âº»ÀûÀ¸·Î ¿ì¼±±ÇÀÌ 100À¸·Î ÁöÁ¤µË´Ï´Ù.
void main(void)
{
printf("This is main.\n");
}
6. #pragma hdrfile
. »ç¿ë¹ý
#pragma hdrfile "filename.CSM"
. ÀÌ Áö½Ã¾î´Â ÇÁ¸®ÄÄÆÄÀÏµÈ Çì´õ¸¦ ÀúÀåÇÒ ÆÄÀÏÀÇ À̸§À» ¼³Á¤ÇÕ´Ï´Ù. IDE
ÇÁ·ÎÁ§Æ®¸¦ À§ÇÑ µðÆúÆ® ÆÄÀϸíÀº <projectname>.CSMÀ̰í command line¿ë
À¸·Î´Â BC32DEF.CSMÀ̶ó´Â À̸§À» °®½À´Ï´Ù. ÇÁ¸®ÄÄÆÄÀÏµÈ Çì´õ¸¦ »ç¿ëÇÏÁö
¾ÊÀ¸¸é ÀÌ Áö½Ã¾î´Â È¿·ÂÀÌ ¾øÀ¸¸ç ¸í·É¶óÀÎ ÄÄÆÄÀÏ·¯ ¿É¼Ç -H=filename ¶Ç´Â
ÇÁ¸® ÄÄÆÄÀÏµÈ Çì´õ¸¦ »ç¿ëÇϸé ÇÁ¸® ÄÄÆÄÀÏµÈ Çì´õ¸¦ ÀúÀåÇϱâ À§ÇØ »ç¿ëµÇ´Â
ÆÄÀϸíÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸í·É¶óÀÎ ¿É¼ÇÀº ´ÙÀ½°ú °°½À´Ï´Ù.
* ÇÁ¸®ÄÄÆÄÀϵå Çì´õ¸¦ »ç¿ëÇÏ´Â °æ¿ì
-H=filename
* ÇÁ¸®ÄÄÆÄÀϵå Çì´õ¸¦ »ç¿ëÀº ÇÏÁö¸¸ »õ·Î¿î ÇÁ¸®ÄÄÆÄÀϵå Çì´õÆÄÀÏÀ»
º¯È¯ÇÏÁö ¾Ê´Â °æ¿ì
-Hu
* ÇÁ¸®ÄÄÆÄÀϵå Çì´õ¸¦ »ç¿ëÇÏÁö ¾Ê°Å³ª »õ·Î¿î ÇÁ¸®ÄÄÆÄÀϵå Çì´õÆÄÀÏÀ»
º¯È¯ÇÏÁö ¾Ê´Â °æ¿ì. (±âº»°ª)
-H-
7. #pragma hdrstop
. »ç¿ë¹ý
#pragma hdrstop
. ÀÌ Áö½Ã¾î´Â ÇÁ¸®ÄÄÆÄÀÏ¿¡ ÀûÇÕÇÑ Çì´õ ÆÄÀÏÀÇ ¸ñ·ÏÀ» Á¾·á½Ã۴µ¥, À̰ÍÀ»
»ç¿ëÇϸé ÇÁ¸®ÄÄÆÄÀÏµÈ Çì´õ°¡ »ç¿ëÇÏ´Â µð½ºÅ© °ø°£ÀÇ ¾çÀ» ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù.
ÇÁ¸®ÄÄÆÄÀϵå Çì´õÆÄÀÏÀº #pragma hdrstopÀÌ ¼±¾ðµÇ±â Àü¿¡ #include¸¦
»ç¿ëÇÏ¿© Æ÷ÇÔµÈ Çì´õÆÄÀϵéÀ» µ¿ÀÏÇÏ°Ô ÇÁ·ÎÁ§Æ® ³»ÀÇ sourceµé°£¿¡ °øÀ¯½Ãų
¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î #pragma hdrstopÀü¿¡ ÀϹÝÀûÀÎ Çì´õÆÄÀϵéÀ» Æ÷ÇÔÇϸé
ÃÖ»óÀÇ ÄÞÆÄÀÏ·¯ÀÇ ¼º´ÉÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. È®½ÇÇÏ°Ô #pragma hdrstop Àü¿¡
#include¸¦ »ç¿ëÇÑ´Ù¸é ¸ðµç source fileµé¿¡°Ô µ¿ÀÏÇÏ°Ô Àû¿ëµÇ°Å³ª ¾ÆÁÖ
Á¶±×¸¶ÇÑ º¯È¸¸ÀÌ ÀÖÀ» °ÍÀÔ´Ï´Ù. IDE ȯ°æ¿¡¼´Â °ÈµÈ ÇÁ¸®ÄÄÆÄÀϵå Çì´õÀÇ
¼º´ÉÀ» °¡Áö´Â ÄÚµå·Î º¯È¯ÇÕ´Ï´Ù. ¿¹¸¦ µéÀÚ¸é ´ÙÀ½ÀÇ New ApplicationÀÇ ¼Ò½º
ÆÄÀÏÀÎ "Unit1.cpp"´Â ´ÙÀ½°ú °°ÀÌ µÉ°ÍÀÔ´Ï´Ù.
#include // ÀϹÝÀûÀÎ Çì´õÆÄÀÏ
#pragma hdrstop // Çì´õÆÄÀÏÀÇ ¸®½ºÆ®´Â ¿©±â¼ ³¡³´Ù.
#include "Unit1.h" // Çì´õÆÄÀÏÀÇ ¸í½Ã
//....
ÀÌ pragma Áö½Ã¾î´Â ¿ÀÁ÷ source file¿¡¼¸¸ »ç¿ëÇϸç, Çì´õÆÄÀÏ¿¡¼ »ç¿ëÇß´Ù
¸é ¾Æ¹«·± È¿°úµµ ¾øÀ» °ÍÀÔ´Ï´Ù.
8. #pragma inline
. »ç¿ë¹ý
#pragma inline
. ÀÌ Áö½Ã¾î´Â ¸í·É ¶óÀÎ ÄÞÆÄÀÏ·¯ ¿É¼Ç -B ¶Ç´Â IDEÀÇ ÀζóÀÎ ¿É¼Ç°ú µ¿ÀÏ
ÇÕ´Ï´Ù. À̰ÍÀº ÄÄÆÄÀÏ·¯¿¡°Ô ÇÁ·Î±×·¥ ³»¿¡ ÀζóÀÎ ¾î¼Àºí¸® ¾ð¾î Äڵ尡
ÀÖÀ½À» ¾Ë·ÁÁÝ´Ï´Ù. ÄÄÆÄÀÏ·¯´Â #pragma inlineÀ» ¸¸³¯¶§ -B¿É¼ÇÀ» »ç¿ëÇÏ¿©
½º½º·Î Àç½Ãµ¿ÇϹǷΠÀÌ Áö½Ã¾î´Â ÆÄÀÏÀÇ »ó´Ü¿¡ ¹èÄ¡µÇ´Â °ÍÀÌ ÃÖ¼±ÀÔ´Ï´Ù.
½ÇÁ¦·Î -B¿É¼Ç°ú #pragma inlineÀ» ¸ðµÎ off½ÃÄÑµÑ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é
ÄÄÆÄÀÏ·¯´Â asm¹®À» ¸¸³ªÀÚ¸¶ÀÚ ½º½º·Î Àç½Ãµ¿ÇÕ´Ï´Ù. ÀÌ ¿É¼Ç°ú Áö½Ã¾îÀÇ
¸ñÀûÀº ÄÄÆÄÀÏ ½Ã°£À» ´Ù¼Ò Àý¾àÇÏ´Â °ÍÀÔ´Ï´Ù.
9. #pragma intrinsic
. »ç¿ë¹ý
#pragma intrinsic [-]function-name
. #pragma intrinsic¸¦ »ç¿ëÇϸé ÇÔ¼öÀÇ inlineȸ¦ À§ÇØ command-line ½ºÀ§Ä¡³ª
IDEÀÇ ¿É¼ÇÀÌ ¹«½ÃµÇ¾îÁý´Ï´Ù. intrinsicÇÔ¼ö¸¦ ÀζóÀÎÈÇÒ ¶§´Â ±× ÇÔ¼ö¸¦
»ç¿ëÇϱâ Àü¿¡ ¹Ýµå½Ã ±×°ÍÀ» À§ÇÑ ¿øÇüÀ» Æ÷ÇÔ½ÃÄѾ߸¸ ÇÕ´Ï´Ù. À̰ÍÀº
ÀζóÀÎÈ ÇÒ ¶§ ÄÄÆÄÀÏ·¯°¡ ÀζóÀÎÈÇÑ ÇÔ¼ö¸¦ ³»ºÎÀûÀ¸·Î ÀνÄÇÏ´Â ÇÔ¼ö·Î
°³¸íÇÏ´Â ¸ÅÅ©·Î¸¦ ½ÇÁ¦·Î »ý¼ºÇϱ⠶§¹®ÀÔ´Ï´Ù. °¡·É strcpy ÇÔ¼ö¸¦ ÀζóÀÎ
È Çϱâ À§ÇÏ¿© ´ÙÀ½°ú °°Àº ¹®ÀåÀ» »ç¿ëÇÏ¿´´Ù¸é
#pragma intrinsic strcpy
ÄÄÆÄÀÏ·¯´Â ´ÙÀ½°ú °°Àº ¸ÅÅ©·Î¸¦ »ý¼ºÇÕ´Ï´Ù.
#define strcpy __strcpy__
ÄÄÆÄÀÏ·¯´Â µÎ ¼±Çà ¹ØÁÙ°ú µÎ ÈÄ¹Ì ¹ØÁÙÀ» »ç¿ëÇÏ¿© ÇÔ¼ö È£ÃâÀ» ÀνÄÇϰí
±× ÇÔ¼öÀÇ ¿øÇüÀ» ³»ºÎÀûÀ¸·Î ÀúÀåÇØ µÐ ¿øÇü°ú ºÎÇÕ½ÃŰ·Á ÇÕ´Ï´Ù. ±×·¯¹Ç·Î
¿øÇüÀ» °ø±ÞÇÏÁö ¾Ê°Å³ª °ø±ÞÇÑ ¿øÇüÀÌ ÄÞÆÄÀÏ·¯ ³»ºÎÀÇ ¿øÇü°ú ºÎÇÕµÇÁö ¾ÊÀ»
°æ¿ì, ÄÞÆÄÀÏ·¯´Â ±× ÇÔ¼ö¸¦ ÀζóÀÎÈ ÇÏ·Á´Â ½Ãµµ¸¦ ºÒ½Ä½ÃŰ°í ¿¡·¯¸¦
¹ß»ý½Ãŵ´Ï´Ù. ÀÌ ÇÁ¶ó±×¸¶ »ç¿ëÀÇ ±Ã±ØÀûÀÎ ¸ñÀûÀº ÇÔ¼ö È£Ãâ¿¡ ´ëÇÑ
¿À¹öÇìµå¸¦ ÁÙÀ§±â À§ÇѰÍÀÔ´Ï´Ù. ÇÔ¼öÈ£ÃâÀº »¡¶óÁö°ÚÁö¸¸ ±×¸¸Å Å©±â´Â
Áõ°¡ÇÏ°Ô µÉ°ÍÀÔ´Ï´Ù.
ex)
#pragma intrinsic strcpy
#pragma intrinsic -strcpy
10.#pragma link
. »ç¿ë¹ý
#pragma link "[path]modulename[.ext]"
. ÀÌ Áö½Ã¾î´Â ½ÇÇàÈÀÏ¿¡ ÆÄÀÏÀ» ¸µÅ©½Ãų°ÍÀ» ¸µÄ¿¿¡¼¼ Áö½ÃÇÕ´Ï´Ù.
±âº»ÀûÀ¸·Î ¸µÄ¿´Â -L¿É¼ÇÀ¸·Î ÁöÁ¤µÈ ÆÐ½º¿Í ·ÎÄ® µð·ºÅ丮¿¡¼ modulenameÀ»
ã½À´Ï´Ù. path ¾Æ±Ô¸ÕÆ®¸¦ ÀÌ¿ëÇÏ¿© µð·ºÅ丮¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¶ÇÇÑ
¸µÄ¿´Â È®ÀåÀÚ¸¦ ".obj"¸¦ ±âº»À¸·Î °£ÁÖÇÕ´Ï´Ù.
11.#pragma message
. »ç¿ë¹ý
#pragma message ("text" ["text"["text" ...]])
#pragma message text
. #pragma message´Â ÇÁ·Î±×·¥ ÄÚµå ³»¿¡¼ »ç¿ëÀÚ Á¤ÀÇ ¸Þ¼¼Áö¸¦ ¸í½ÃÇÕ´Ï´Ù.
ù¹øÂ° Çü½ÄÀº Çϳª ÀÌ»óÀÇ ½ºÆ®¸µ »ó¼öµé·Î ±¸¼ºµÈ ¹®ÀåÀ» ÇÊ¿ä·Î Çϰí
¸Þ¼¼Áö´Â °ýÈ£¾È¿¡ ½Î¿©ÀÖ¾î¾ß¸¸ ÇÕ´Ï´Ù.(ÀÌ Çü½ÄÀº MSC¿Í ȣȯµË´Ï´Ù.)
µÎ¹øÂ° Çü½ÄÀº °æ°í ¸Þ¼¼ÁöÀÇ ¹®ÀåÀ» À§ÇØ #pragma¿¡ ¿¬¼ÓµÇ´Â ¹®ÀåÀ»
»ç¿ëÇÕ´Ï´Ù. #pragmaÀÇ µÎ°¡Áö ÇüÅÂ¿Í ÇÔ²² ´Ù¸¥ ¸ÞÅ©·ÎÀÇ ÂüÁ¶´Â ¸Þ¼¼Áö°¡
µð½ºÇ÷¹ÀÌ µÇ±âÀü¿¡ È®ÀåµÇ¾îÁý´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇ ¸Þ¼¼Áö°¡ µð½ºÇ÷¹ÀÌ
µÇ´Â°ÍÀº ±âº»Ä¡ÀÌ¸ç ¸í·É ¶óÀÎ ¿É¼ÇÀÇ Show Warnings¸¦ »ç¿ëÇÏ¿©
on/off ½Ãų ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿É¼ÇÀº ÄÞÆÄÀÏ·¯ÀÇ -wmsg¿¡ ÇØ´çÇÕ´Ï´Ù.
ex)
// msacm.h
#if defined(UNICODE) && !defined(_UNICODE)
#ifndef RC_INVOKED
#pragma message("MSACM.H: defining _UNICODE
because application defined UNICODE")
#endif
#define _UNICODE
#endif
// ustring.h
#pragma message osl/ustring.h has been replaced by winsys/string.h
#include
12.#pragma obsolete
. »ç¿ë¹ý
#pragma obsolete identifier
. #pragma obsolete ÇÁ·Î±×·¥ Äڵ忡¼ pragmaÀÇ ¼±¾ð ÀÌÈÄ¿¡ ¸¶ÁÖÄ¡°Ô µÇ´Â
identifierÀÇ Ã¹¹øÂ° »ç¿ë¿¡ ´ëÇØ¼ °æ°í¸¦ ¹ß»ýÇÕ´Ï´Ù. °æ°í´Â identifier¸¦
¾µ¸ð¾ø´Â »óÅ·Π¸¸µì´Ï´Ù.
ex)
// io.h
#if !defined(RC_INVOKED)
/* Obsolete functions */
#pragma obsolete _chmod
#pragma obsolete _close
#pragma obsolete _creat
#pragma obsolete _open
#pragma obsolete _read
#pragma obsolete _write
/* restore default packing */
#pragma pack(pop)
#if defined(__STDC__)
#pragma warn .nak
#endif
#endif /* !RC_INVOKED */
13.#pragma option
. »ç¿ë¹ý
#pragma option options
#pragma option push options
#pragma option pop
. #pragma optionÀº ÇÁ·Î±×·¥ ¿ø½Ã ÄÚµå ³»¿¡ ¸í·É¶óÀÎ ¿É¼ÇÀ» Æ÷ÇÔ½Ã۰íÀÚ
ÇÒ ¶§ »ç¿ëÇϸç push ¶Ç´Â pop ¿É¼Ç°ú ÇÔ²² »ç¿ëµÇ¾îÁú ¼ö ÀÖ½À´Ï´Ù.
options´Â ÀÓÀÇÀÇ ¸í·É¶óÀÎ ¿É¼Ç(´Ü, ¾Æ·¡¿¡ ¼ö·ÏµÈ °ÍÀº Á¦¿ÜÇÕ´Ï´Ù.)À̸ç
ÇϳªÀÇ Áö½Ã¾î ³»¿¡¼ ¿©·¯°³ÀÇ optionµéÀ» ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.
¿¹¸¦ µéÀÚ¸é ´ÙÀ½°ú °°½À´Ï´Ù.
#pragma option -C
#pragma option -C -A
toggle option(-a, -K°°Àº)Àº comman line¿¡¼ on/offµÉ¼ö ÀÖ½À´Ï´Ù.
À̵é toggle optionµéÀº option ´ÙÀ½¿¡ ¸¶Ä§Ç¥¸¦ µÎ¸é ±× ¸í·É¶óÀÎ, ±¸¼º ÆÄÀÏ,
¿É¼Ç ¸Þ´º ¼³Á¤°ª¿¡ ´ëÇØ ¿É¼ÇÀ» ¸®ÅÐÇÒ ¼ö ÀÖÀ¸¸ç À̸¦ ÀÌ¿ëÇϸé Á¤È®ÇÑ
¼³Á¤°ªÀ» ±â¾ïÇÏÁö ¾Ê°íµµ(ȤÀº ¾Ë Çʿ䰡 ¾ø°Å³ª) ¿É¼ÇÀ» Àӽ÷Πº¯°æÇß´Ù°¡
´Ù½Ã ±×°ÍÀ» µðÆúÆ®·Î º¹±Í½Ãų ¼ö ÀÖ½À´Ï´Ù.
pragma optino¿¡ Æ÷ÇÔÇÏ¿© ³ªÅ¸³¯ ¼ö ¾ø´Â ¿É¼ÇµéÀº ´ÙÀ½°ú °°½À´Ï´Ù.
-B -c -dname
-Dname=string -efilename -E
-Fx -h -lfilename
-lexset -M -o
-P -Q -S
-T -Uname -V
-X -Y
´ÙÀ½ÀÇ °æ¿ì¿¡ #pragmas, #indluces, #define°ú ¾à°£ÀÇ #ifs¸¦ »ç¿ëÇÒ ¼ö
ÀÖ½À´Ï´Ù.
* #if, #ifdef, #ifndef ¶Ç´Â #elifÁö½Ã¾î ³»¿¡¼ µÎ ¹ØÁÙ·Î ½ÃÀÛÇÏ´Â ¸ÅÅ©·Î¸í
(±×¸®°í ±×¿¡ µû¸¥ ³»Àå ¸ÅÅ©·Îµµ °¡´ÉÇÕ´Ï´Ù.)ÀÇ »ç¿ë Àü.
* ù¹øÂ° ½ÇÀç tokenÀÌ ¹ß»ýÇϱâ Àü(ù¹øÂ° C ¶Ç´Â C++ ¼±¾ð¹®)
ƯÁ¤ ¸í·É ¶óÀÎ ¿É¼ÇÀº ÀÌµé »ç°Ç ¾ÕÀÇ #pragma option ³»¿¡¼¸¸ ³ªÅ¸³¯ ¼ö
Àִµ¥ ±×·¯ÇÑ optionµéÀº ´ÙÀ½°ú °°½À´Ï´Ù.
-Efilename -f -i#
-m* -npath -ofilename
-u -W -z
´Ù¸¥ optionµéÀº ¾îµð¼³ª º¯°æµÉ ¼ö Àִµ¥ ´ÙÀ½ optionµéÀº ÇÔ¼ö ¶Ç´Â ´ë»ó
¼±¾ð¹® »çÀÌ¿¡¼ º¯°æµÉ °æ¿ì ÄÄÆÄÀÏ·¯¿¡¸¸ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
-1 -h -r
-2 -k -rd
-a -N -v
-ff -O -y
-G -p -Z
´ÙÀ½ÀÇ optionµéÀº ¾ðÁ¦µçÁö º¯°æµÉ ¼ö ÀÖÀ¸¸ç Áï½Ã ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ½À´Ï´Ù.
-A -gn -zE
-b -jn -zF
-C -K -zH
-d -wxxx
À̵é optionµéÀº ±× ¸í·É ¶óÀÎ »óÅ·ΠÀç¼³Á¤Çϱâ À§ÇØ Á¡(.)¾Õ¿¡ Ãß°¡·Î
³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù.
push ¶Ç´Â popÀ» »ç¿ëÇÑ #pragma option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
¶ÇÇÑ ÄÞÆÄÀÏ·¯ Áö½Ã¾îµéÀ» ½±°Ô º¯°æÇÒ ¼ö ÀÖµµ·Ï push ±×¸®°í pop ¾Æ±Ô¸ÕÆ®µé
°ú ÇÔ²² #pragma option Áö½Ã¾î¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
ÀáÀçÀûÀ¸·Î ¸¹Àº ÄÄÆÄÀÏ·¯ ¿É¼Ç°ú °æ°íµéÀ» º¯°æÇÏ´Â ÆÄÀϵéÀ» Æ÷ÇÔÇϱâ À§ÇØ
#pragma option push¸¦ »ç¿ëÇÒ ¼ö ÀÖ°í, #pragma option popÀº ´ÜÀÏ ¹®ÀåÀ¸·Î¼
ÀÌÀüÀÇ »óŸ¦ µÇµ¹·ÁÁØ´Ù. ¿¹¸¦ µéÀÚ¸é ´ÙÀ½°ú °°´Ù.
#pragma option push
#include <theworld.h>
#pragma option pop
#include "mystuff.h"
#pragma option push Áö½Ã¾î´Â ù¹øÂ°·Î ¸ðµç ÄÞÆÄÀÏ·¯ ¿É¼Çµé°ú °æ°í ¼³Á¤µéÀ»
½ºÅÿ¡ pushÇÑ ÈÄ¿¡ ´Ù¸¥ ¿É¼ÇµéÀÌ Á¸ÀçÇÑ´Ù¸é À̸¦ ó¸®ÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹´Â
#pragma option push°¡ ¿É¼ÇµéÀ» »ç¿ëÇϰųª ȤÀº ±×·¸Áö ¾ÊÀ»¼ö ÀÖÀ½À»
º¸¿©ÁÝ´Ï´Ù.
#pragma option push -C -A
#pragma option push
#pragma option pop directiveÀº ½ºÅÃÀ¸·ÎºÎÅÍ ¿É¼Çµé°ú °æ°íµéÀÇ ¸¶Áö¸· ¼³Á¤
À» popÇÔÀ¸·Î¼ ÄÄÆÄÀÏ·¯ ¿É¼Ç°ú °æ°íµéÀ» º¯°æÇÕ´Ï´Ù. ¸¸ÀÏ ½ºÅÃÀÌ ºñ¾îÀÖ°í
option pop°ú ÀÏÄ¡ÇÏ´Â option push°¡ ¾øÀ¸¸ç ¾Æ¹«°Íµµ ¹ß»ýÇÏÁö ¾ÊÀº°æ¿ì
°æ°í°¡ ÁÖ¾îÁý´Ï´Ù. ´ÙÀ½Àº ºó ½ºÅÿ¡´ëÇØ¼ °æ°í¸¦ ¹ß»ý½Ãŵ´Ï´Ù.
#pragma option push
#pragma option pop
#pragma option pop /* °æ°í°¡ ¹ß»ýÇÕ´Ï´Ù.
±ÇÀåÇÏÁö´Â ¾ÊÁö¸¸ Áö½Ã¾î¸¦ »ç¿ëÇÏ¿© ÀÌ °æ°í¸¦ off½Ãų ¼ö ÀÖ½À´Ï´Ù.
#pragma warn -nop.
¸¸ÀÏ popÀÇ ´ÙÀ½¿¡ ¾î¶² ¿É¼ÊµéÀ» ¸í½ÃÇÒ·Á°í ÇÑ´Ù¸é ¿¡·¯°¡ ¹ß»ýÇϰԵǸç
pragma option pop ´ÙÀ½¿¡´Â ¾î¶²°Íµµ Çã¶ôÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½Àº
¿¡·¯¸¦ ¹ß»ýÇÕ´Ï´Ù.
#pragma option pop -C /* ERROR
¸¸ÀÏ pushµÈ ¿É¼ÇµéÀÇ ½ºÅÃÀÌ ÆÄÀÏÀÇ ½ÃÀÛ°ú ¸¶Áö¸·ÀÌ µ¿ÀÏÇÏÁö ¾Ê´Ù¸é
´ÙÀ½°ú °°Àº °æ°í¸Þ¼¼Áö°¡ ¹ß»ýÇÕ´Ï´Ù.
Previous options and warnings not restored.
ÀÌ °æ°í¸Þ¼¼Áö¸¦ off½Ã۱â À§ÇÏ¿© Áö½Ã¾î #pragma nopushoptwarn¸¦ »ç¿ëÇÒ
¼ö ÀÖ½À´Ï´Ù.
14.#pragma pack
. »ç¿ë¹ý
#pragma pack(n)
#pragma pack(push, n)
#pragma pack(pop)
. #pragma pack Áö½Ã¾î´Â ÄÞÆÄÀÏ·¯ ¿É¼Ç -a¿Í ÇÔ²² #pragma optionÀ» »ç¿ëÇÏ´Â
°Í°ú µ¿ÀÏÇÕ´Ï´Ù. nÀº ÄÞÆÄÀÏ·¯°¡ ÀúÀåµÈ ¸Þ¸ð¸®¿¡ µ¥ÀÌÅ͸¦ Á¤·ÄÇÏ´Â ¹æ¹ýÀ»
°áÁ¤ÇÏ´Â byteÀÇ Á¤·ÄÀÌ´Ù. º¸´Ù ÀÚ¼¼ÇÑ »çÇ×Àº -a ÄÞÆÄÀÏ·¯ ¿É¼Ç¿¡ °üÇÑ
³»¿ëÀ» Âü°íÇϽʽÿä. #pragma packÀº ¶ÇÇÑ #pragma optionÁö½Ã¾î¿¡ push³ª
popÀ» »ç¿ëÇϴ°Ͱú µ¿ÀÏÇÑ ±â´ÉÀ» Á¦°ø Çϵµ·Ï push³ª pop ¾Æ±Ô¸ÕÆ®¿Í ÇÔ²²
»ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ÀÇ ³»¿ëÀº #pragma pack°ú #pragma optionÀ» ºñ±³ÇÑ
³»¿ëÀÔ´Ï´Ù.
¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦³¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬
#pragma pack ¦ #pragma option
¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¶¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬
#pragma pack(n) ¦ #pragma option -an
#pragma pack(push, n) ¦ #pragma option push -an
#pragma pack(pop) ¦ #pragma option pop
¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦µ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬
15.#pragma package
. »ç¿ë¹ý
#pragma package(smart_init)
#pragma package(smart_init, weak)
. smart_init ¾Æ±Ô¸ÕÆ®
#pragma package(smart_init)´Â ÆÐŰÁöµÈ À¯´ÖµéÀÌ ÀÇÁ¸ÇÒ ¼ø¼¸¦ °áÁ¤ÇϱâÀ§ÇØ
ÃʱâÈ µÇ¾îÁý´Ï´Ù.(ÆÐŰÁö ¼Ò½ºÆÄÀÏ ³»¿¡ ±âº»ÀûÀ¸·Î Æ÷ÇԵ˴ϴÙ.)
ÀϹÝÀûÀ¸·Î, ÆÐŰÁöµéÀ» »ý¼ºÇÏ´Â .CPP ÆÄÀϵ鿡 #pragma package¸¦ »ç¿ëÇÒ ¼ö
ÀÖ½À´Ï´Ù.
ÀÌ ÇÁ¶óÅ©¸¶´Â À¯´ÖÀ» ÄÞÆÄÀÏÇϴ±âÀ§ÇÑ ÃʱâÀÇ ¼ø¼¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
ÃʱâÈ´Â ´ÙÀ½ÀÇ ¼ø¼¿¡ ÀÇÇÏ¿© ¹ß»ýÇÕ´Ï´Ù.
1. ¸¸ÀÏ unitA°¡ unitB¿¡ ÀÇÁ¸ÇÑ´Ù¸é unitB´Â ¹Ýµå½Ã unitAÀü¿¡ ÃʱâÈ
µÇ¾îÁ®¾ß¸¸ÇÏ´Â »ç¿ë("uses")¿¡ ÀÇÁ¸ÇÕ´Ï´Ù.
2. ¸µÅ©ÀÇ ¼ø¼(The link order)
3. unit¿¡¼ÀÇ ¿ì¼±±ÇÀÇ ¼ø¼.(Priority order within the unit.)
º¸ÅëÀÇ .OBJ ÆÄÀϵéÀº(unitµé·Î »ý¼ºÇÏÁö ¾ÊÀº), ù°·Î ¿ì¼±±ÇÀÇ ¼ø¼¿¡ µû¶ó
ÃʱâȰ¡ ÀϾ°í¼ ¸µÅ©°¡ µË´Ï´Ù. .OBJ ÆÄÀϵéÀÇ ¸µÅ© ¼ø¼ÀÇ º¯°æÀº
±Û·Î¹ß ¿ÀºêÁ§Æ®°¡ È£ÃâµÇ¾îÁ® »ý¼ºµÇ´Â ¼ø¼¿¡ ÀÇÇØ º¯°æµË´Ï´Ù.
´ÙÀ½ÀÇ ¿¹´Â º¸ÅëÀÇ .OBJ ÆÄÀϵé°ú unitµéÀÇ ÃʱâÈ¿¡ ¾î¶² Â÷ÀÌÁ¡ÀÌ Àִ°¡¸¦
º¸¿©ÁÝ´Ï´Ù. ¼¼°³ÀÇ unit ÆÄÀϵé A,B,C°¡ #pragma package(smart_init)¸¦
»ç¿ëÇÏ¿© "smart initialized"µÇ°í ¿ì¼±±ÇÀº 10, 20, 30ÀÇ °ªÀ» °®´Â´Ù°í
¿¹¸¦ µì´Ï´Ù. ÇÔ¼ö´Â ¿ì¼±±ÇÀÇ °ª°ú parent .OBJ¿¡ ÀÇÇÏ¿© À̸§Áö¾îÁ® a10,
a20, a30, b10µî°ú °°Àº À̸§À» °®½À´Ï´Ù. ¼¼°¡Áö´Â ¸ðµÎ unitµéÀ̸ç A´Â B¿Í
C¸¦ »ç¿ëÇϸç A,B,CÀÇ ¼ø¼·Î ¸µÅ©µÇ°í ÃʱâÈÀÇ ¼ø¼´Â ´ÙÀ½°ú °°½À´Ï´Ù.
B10 B20 B30 C10 C20 C30 A10 A20 A30
À§¿Í °°ÀÌ µÇ¾ú´Ù¸é .OBJ ÆÄÀϵéÀº (unitµéÀÌ ¾Æ´Ï´Ù)´ÙÀ½ÀÇ ¼ø¼°¡ µÇ¾îÁú
°ÍÀÔ´Ï´Ù.
A10 B10 C10 A20 B20 C20 A30 B30 C30
#pragma package(smart_init)¸¦ »ç¿ëÇÑ .CPP ÆÄÀϵéÀº ¶ÇÇÑ #pragma package
(smart_init)¸¦ Á¤ÀÇÇÑ .CPP ÆÄÀϷκÎÅÍ ´Ù¸¥ .OBJ ÆÄÀϵéÀ» ÂüÁ¶ÇÏ´Â #pragma
link¸¦ ÇÊ¿ä·Î Çϸç unit¿¡ ÀÇÇØ °áÁ¤µÇ¾îÁ®¾ß¸¸ ÇÕ´Ï´Ù. #pragma link´Â, °áÁ¤
µÇÁö ¾ÊÀº .OBJ´Â ¶óÀ̺귯¸® µî¿¡ ÀÇÇÏ¿© ¿©ÀüÈ÷ °áÁ¤µÇ¾îÁú ¼ö ÀÖµµ·Ï ÂüÁ¶
ÇÒ ¼ö ÀÖ½À´Ï´Ù.
. weak packages
#pragma package(smart_init, weak)Áö½Ã¾î´Â .OBJ ÆÄÀÏÀÌ ÆÐŰÁöÀÇ .BPI¿Í
.BPL ÆÄÀϵ鿡 Á¤ÀåµÇ´Â ¹æ¹ý¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ¸¸ÀÏ #pragma package(smart_
init, weak)°¡ unitÆÄÀÏ ³»¿¡ ³ªÅ¸³´Ù¸é ÄÞÆÄÀÏ·¯´Â °¡´ÉÇÏ´Ù¸é BPLµé·ÎºÎÅÍ
unitÀ» »ý·«Çϰí, ´Ù¸¥ ¿¡Çø®ÄÉÀ̼ÇÀ̳ª ÆÐŰÁö¿¡ ÀÇÇØ ÇÊ¿ä·Î ÇÒ ¶§¸é
ºñ ÆÐŰÁöȵÈ(non-packaged) ·ÎÄ® º¹»çº»ÀÇ unitÀ» »ý¼ºÇÕ´Ï´Ù. À¯´ÖÀÌ ÀÌ
Áö½Ã¾î¿Í ÇÔ²² ÄÞÆÄÀÏ µÇ¾ú´Ù´Â °ÍÀº ¾àÇÏ°Ô ÆÐŰÁöÈ µÇ¾úÀ½À» À̾߱â ÇÕ´Ï´Ù.
("weakly packaged")
#pragma package(smart_init, weak)´Â µ¿ÀÏÇÑ ¿ÜºÎ ¶óÀ̺귯¸®(external librar
y)µé¿¡ ÀÇÁ¸ÇÒ¼ö ÀÖ´Â ¿©·¯ ÆÐŰÁöµé »çÀÌ¿¡¼ÀÇ Ãæµ¹À» Á¦°ÅÇϴµ¥ »ç¿ëµÇ¾î
Áý´Ï´Ù. #pragma package(smart_init, weak) Áö½Ã¾î¸¦ °¡Áö´Â unit ÆÄÀϵéÀº
±Û·Î¹ß º¯¼öµéÀ» °®Áö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù.
16.#pragma resource
. »ç¿ë¹ý
#pragma resource "*.dfm"
. ÀÌ ÇÁ¶ó±×¸¶´Â form unit¿¡ ÀÇÇØ ¼±Á¤µÇ¾îÁö´Â ÆÄÀϷμ ÀÏÄ¡µÇ´Â .DFM ÆÄÀϰú
Çì´õÆÄÀÏÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸ðµç ÆÄÀϵéÀº IDE¿¡ ÀÇÇØ °ü¸®µÇ¾îÁý´Ï´Ù.
¸¸ÀÏ ÆûÀ» À§ÇÑ ´Ù¸¥ º¯¼öµéÀ» ÇÊ¿ä·ÎÇÑ´Ù¸é pragma resource°¡ »ç¿ëµÇ¾îÁö°í³
ÈÄ¿¡ Áï½Ã ¼±¾ðµÇ¾îÁ®¾ß¸¸ ÇÕ´Ï´Ù. ¼±¾ðÀº ¹Ýµå½Ã formÀÌ µÇ¾îÁ®¾ß¸¸ ÇÕ´Ï´Ù.
TFormName *Formname;
17.#pragma startup
. »ç¿ë¹ý
#pragma startup function-name <priority>
#pragma exit function-name <priority>
. #pragma exitÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿä.
18.#pragma warn
. »ç¿ë¹ý
#pragma warn [+:-:.]www
. warnÁö½Ã¾î¸¦ ÀÌ¿ëÇÏ¸é Æ¯Á¤ ¸í·É¶óÀÎ ¿É¼Ç -wxxx¸¦ ¿ì¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù.
#pragma warn -aus ½ºÀ§Ä¡¸¦ »ç¿ëÇϸé ÇÔ¼ö ´ÜÀ§·Î Ãë±ÞµË´Ï´Ù. °³º°ÀûÀÎ
º¯¼öµéÀ» À§Çؼ ÇÔ¼ö ³»ºÎ¿¡¼ °æ°í¸¦ off½Ãų¼ö´Â ¾ø½À´Ï´Ù. ÇÔ¼ö Àüü¸¦
off½ÃŰ°Å³ª ȤÀº ±×·¸Áö ¾Ê°Å³ª µÑÁß ÇϳªÀÔ´Ï´Ù.
ex)
#pragma warn +xxx
#pragma warn -yyy
#pragma warn .zzz
À§ÀÇ ¿¹¿¡¼´Â xxx°æ°í¹®Àº onµÇ°í yyy°æ°í¹®Àº offµÇ¸ç zzz°æ°í¹®Àº ÆÄÀÏÀÇ
ÄÄÆÄÀÏÀÌ ½ÃÀÛÇÒ ¶§ °®°í ÀÖ´ø °ªÀ¸·Î ÀçÀúÀåµË´Ï´Ù.
|