[Æß] pragma»ç¿ë¹ýÁ¤¸®
¾È³çÇϼ¼¿ä! ´ãºñÀÔ´Ï´Ù. º» ¹®¼´Â Á¦°¡ °¡Áö°í Àִ å°ú Á¦°øµÈ µµ¿ò¸»À» ±âÃÊ·Î ÇÏ¿© ÀÛ¼ºµÇ¾îÁ³½À´Ï´Ù. Á¦°¡ ¿µ¾î ½Ç·ÂÀÌ ºÎÁ·ÇÑ Å¿À¸·Î ³»¿ëÀÇ ÀÌÇØ°¡ ¾à°£(?)Àº Èûµé°Å³ª, ¹®¸Æ»óÀÇ ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Ȥ ÀÌ·± ³»¿ëÀ» ¹ß°ßÇϽðųª, À߸øµÈ ³»¿ëÀ» ¹ß°ßÇϽðųª, Ãß°¡µÇ¾îÁ®¾ß ÇÒ ³»¿ëÀ» ¹ß°ßÇÏ½Å´Ù¸é ¸ÞÀÏ ÁÖ½Ã¸é °¨»çÇÏ°Ú½À´Ï´Ù. º¸³»ÁֽŠ³»¿ëÀº °ËÅä ÈÄ ¹®¼¿¡ Àç¹Ý¿µÇÏ¿© ¿Ã¸®µµ·Ï ÇÏ°Ú½À´Ï´Ù. 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 <stdio.h> 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 <vcl.h> // ÀϹÝÀûÀÎ Çì´õÆÄÀÏ #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 <winsys/string.h> //-------------------------------------------------------------------------- 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°æ°í¹®Àº ÆÄÀÏÀÇ ÄÄÆÄÀÏÀÌ ½ÃÀÛÇÒ ¶§ °®°í ÀÖ´ø °ªÀ¸·Î ÀçÀúÀåµË´Ï´Ù. //----- End of Document ---------------------------------------------------- |
Âü°í: http://blog.naver.com/fisheye71/20008860045