[Æß] 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