Free Pascal/Programmers Guide
ÇÁ¸® ÆĽºÄ® ÇÁ·Î±×·¡¸Ó ¾È³»¼
ÀÌ ¹®¼´Â ¹ø¿ª ÁßÀÔ´Ï´Ù.
Contents
0.1. ÀÌ ¹®¼¿¡ ´ëÇÏ¿©
ÇÁ¸® ÆĽºÄ®ÀÇ ÇÁ·Î±×·¡¸Ó ¾È³»¼ÀÔ´Ï´Ù.
ÀÌ ¾È³»¼´Â ÇÁ¸® ÆĽºÄ® ÄÄÆÄÀÏ·¯ÀÇ Æ¯Â¡À» ¼³¸íÇÏ°í, ÄÄÆÄÀÏ·¯°¡ ¾î¶»°Ô Äڵ带 »ý¼ºÇÏ°í, ¶Ç »ý¼ºµÈ Äڵ带 ¾î¶»°Ô ¹Ù²Ü ¼ö ÀÖ´ÂÁö¸¦ ¼³¸íÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª ÄÄÆÄÀÏ·¯ ³»ºÎÀÇ µ¿ÀÛ¿¡ ´ëÇؼ ÀÚ¼¼È÷ ¼³¸íÇÏÁö´Â ¾ÊÀ» °ÍÀÌ°í, ÄÄÆÄÀÏ·¯ »ç¿ë¹ýÀ» ¼³¸íÇÏÁöµµ ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº »ç¿ëÀÚ ¾È³»¼¿¡ Àß ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. ½ÇÇà½Ã°£ ¶óÀ̺귯¸®(RTL)ÀÇ ³»ºÎ µ¿ÀÛ¿¡ ´ëÇؼµµ ¼³¸íÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. RTLÀÌ ¾î¶»°Ô ±¸ÇöµÇ¾î ÀÖ´ÂÁö¸¦ ¾Ë·Á¸é ¼Ò½º Äڵ带 Á÷Á¢ »ìÆ캸´Â °ÍÀÌ Á¦ÀÏ ÁÁÀ» °ÍÀÔ´Ï´Ù.
¿©±â¼ ¼³¸íÇÏ´Â °ÍµéÀº ÂüÁ¶ ¾È³»¼¿¡¼ ¼³¸íµÇ¾î Àִ ǥÁØ ÆĽºÄ® ¾ð¾î°¡ ±¸¼ºÇÏ´Â °Íº¸´Ù ´õ À¯¿¬ÇØ¾ß ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.
ÄÄÆÄÀÏ·¯°¡ Áö¼ÓÀûÀ¸·Î °³¹ßµÇ°í Àֱ⠶§¹®¿¡, ÀÌ ¹®¼´Â ÀÌ¹Ì Áö³ °ÍÀÏ ¼ö ÀÖ½À´Ï´Ù. °¡´ÉÇÑ ºÎºÐ¿¡¼, ÀÌ ¸Å´º¾óÀÇ Á¤º¸´Â ¾÷µ¥ÀÌÆ® µÉ °ÍÀÔ´Ï´Ù. Ʋ¸° ºÎºÐÀÌ Àְųª ºüÁø ºÎºÐÀÌ ÀÖ´Ù¸é ÁÖÀú¸»°í ¿¬¶ôÇØ ÁֽʽÿÀ[1].
1. ÄÄÆÄÀÏ·¯ Áö½ÃÀÚ ¶ÇÁ¸® ÆĽºÄ®Àº ¼Ò½º ÆÄÀÏ ³»¿¡¼ ÄÄÆÄÀÏ·¯ Áö½ÃÀÚ¸¦ Áö¿øÇÕ´Ï´Ù. ȣȯ¼ºÀ» À§ÇÏ¿© Åͺ¸ ÆĽºÄ®ÀÇ Áö½ÃÀÚ Áß¿¡¼ ÀϺθ¦ Áö¿øÇÏÁö¸¸ Åͺ¸ ÆĽºÄ®ÀÇ Áö½ÃÀÚ¿Í´Â ´Ù¸¨´Ï´Ù. Áö½ÃÀÚ´Â Áö¿ª°ú Àü¿ª Áö½ÃÀÚ·Î ±¸ºÐÇÕ´Ï´Ù. Áö¿ª Áö½ÃÀÚ´Â Áö½ÃÀÚ¸¦ ¸¸³µÀ» ¶§ È¿°ú°¡ ¹ßÈֵǰí, Àü¿ª Áö½ÃÀÚ´Â ÄÄÆÄÀÏ µÈ ÄÚµå Àüü¿¡¼ È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù.
¿©·¯ ½ºÀ§Ä¡µéÀº ±æ°Ô ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ±æ°Ô ¾µ ¼ö ÀÖ´Â °ÍµéÀº ±ä ÇüÅÂÀÇ À̸§ÀÌ ÀÖ½À´Ï´Ù. +³ª - ¹®ÀÚ´Â ¿É¼ÇÀ» ÄѰųª ²ø ¼ö Àִµ¥ ONÀ̳ª OFF·Î ±æ°Ô ¾µ ¼öµµ ÀÖ½À´Ï´Ù.
µû¶ó¼
{$I+} ¿É¼ÇÀº {$IOCHECKS ON} ȤÀº {$IOCHECKS +} °ú °°°í {$C-} Àº {$ASSERTIONS OFF} ȤÀº {$ASSERTIONS -} °ú °°½À´Ï´Ù.
½ºÀ§Ä¡ÀÇ ±ä ÇüÅ´ µ¨ÆÄÀÌ ÂÊ°ú °°½À´Ï´Ù.
1.1. Áö¿ª Áö½ÃÀÚ ¶Áö¿ª Áö½ÃÀÚ´Â À¯´ÖÀ̳ª ÇÁ·Î±×·¥¿¡¼ Çѹø ÀÌ»ó ³ª¿Ã ¼ö ÀÖ¾¹´Ï´Ù. ¸í·ÉÁÙ¿¡ Áö¿ª Áö½ÃÀÚ°¡ ÀÖÀ¸¸é ¸í·ÉÁÙ ÀÎÀÚ°¡ °¢°¢ÀÇ ÄÄÆÄÀÏµÈ ÆÄÀÏ¿¡ ±âº»À¸·Î ÀúÀåµË´Ï´Ù. Áö¿ªÁö½ÃÀÚ¸¦ ¸¸³ª¸é ´Ù¸¥ ½ºÀ§Ä¡°¡ ¹«È¿ÈÇϰųª ÇÁ·Î±×·¥ ³¡¿¡ µµ´ÞÇÒ ¶§±îÁö ÄÄÆÄÀÏ·¯ÀÇ Çൿ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù
1.1.1. $A or $ALIGN : µ¥ÀÌÅÍ Á¤·Ä ¹æ½Ä ¶ {$ALIGN Áö½ÃÀÚ´Â Mac OS¿ëÀ¸·Î ÄÄÆÄÀÏÇÒ ¶§ µ¥ÀÌÅÍÀÇ Á¤·Ä ¹æ½ÄÀ» ¼±ÅÃÇϴµ¥ »ç¿ëÇÕ´Ï´Ù. MACPAS¸ðµå¿¡¼¸¸ ¾µ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
1.1.2. $ASMMODE : ¾î¼Àºí·¯ ¸ðµå (ÀÎÅÚ 80x86 Àü¿ë) ¶ {$ASMMODE XXX} Áö½ÃÀÚ´Â asm ºí·°À» ¸¸³µÀ» ¶§ ¾î¶² Á¾·ùÀÇ ¾î¼Àºí·¯¸¦ »ç¿ëÇÒÁö¸¦ ¼³Á¤ÇÕ´Ï´Ù. XXXºÎºÐ¿¡ ´ÙÀ½ Áß¿¡ Çϳª¸¦ ½á ³Ö½À´Ï´Ù.
¸ðµÎ Áö¿ª ½ºÀ§Ä¡À̸ç, °°Àº Á¾·ùÀÇ Áö½ÃÀÚ·Î ´ëüµÇÁö ¾Ê´Â ÇÑ, ÄÄÆÄÀϵǴ À¯´ÖÀÇ ³¡±îÁö °ªÀ» À¯ÁöÇÕ´Ï´Ù. ÀÌ°Í°ú °ü·ÃµÈ ¸í·ÉÁÙ ½ºÀ§Ä¡´Â -R ÀÔ´Ï´Ù.
±âº» ¾î¼Àºí·¯ ¸®´õ´Â AT&T ¸®´õÀÔ´Ï´Ù.
1.1.3. $B or $BOOLEVAL : ¿ÏÀüÇÑ ºÒ¸®¾ð ¿¬»ê¹ý ¶ÀÌ ½ºÀ§Ä¡´Â ÇÁ¸® ÆĽºÄ® ÄÄÆÄÀÏ·¯°¡ ÀÌÇØÇÏ´Â °ÍÀ̱ä ÇÏÁö¸¸ ¹«½ÃµË´Ï´Ù. ÄÄÆÄÀÏ·¯´Â Ç×»ó ºÒ¿ÏÀü ¿¬»êÀ» ÇÕ´Ï´Ù. Áï, Àüü ¿¬»êÀÇ °á°ú°¡ ¹«¾ùÀÎÁö È®½ÅÇÒ ¼ö ÀÖ´Â ½ÃÁ¡¿¡¼ ¿¬»êÀ» ±×¸¸µÓ´Ï´Ù.
µû¶ó¼ ´ÙÀ½°ú °°Àº ¿¹Á¦¿¡¼ ºÒ¸®¾ð °ªÀ» ¸®ÅÏÇÏ´Â Bofu¶ó´Â ÇÔ¼ö´Â Àý´ë È£ÃâµÇÁö ¾Ê½À´Ï´Ù.
If False and Bofu then ...µû¶ó¼ Bofu°¡ Ãß°¡ÀûÀ¸·Î ÇÏ´Â °ÍµéÀº ¼öÇàµÇÁö ¾Ê½À´Ï´Ù. 1.1.4. $C or $ASSERTIONS : Assertion Áö¿ø ¶ {$ASSERTIONS} ½ºÀ§Ä¡´Â assert¹®À» ÀÌÁø ÄÚµå·Î ÄÄÆÄÀÏ ÇÒ °ÍÀÎÁö ¾È ÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÕ´Ï´Ù. ½ºÀ§Ä¡°¡ ÄÑÁ® ÀÖÀ¸¸é
Assert(BooleanExpression,AssertMessage);¿Í °°Àº ±¸¹®Àº ÀÌÁø ÆÄÀÏ·Î ÄÄÆÄÀÏ µÉ °ÍÀÔ´Ï´Ù. ¸¸ÀÏ BooleanExpression ÀÇ °ªÀÌ False°¡ µÇ¸é, RTLÀÌ AssertErrorProc °¡ ¼¼ÆõǾî ÀÖ´ÂÁö üũÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¼¼ÆõǾî ÀÖÀ¸¸é AssertMessage ¸Þ½ÃÁö¿¡ ÁÙ ¹øÈ£¿Í ÁÖ¼Ò¸¦ ÆĶó¹ÌÅÍ·Î ³Ñ°Ü¼ È£ÃâÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¼¼ÆõǾî ÀÖÁö ¾ÊÀ¸¸é 227¹ø ½ÇÇà ½Ã°£ ¿¡·¯°¡ »ý¼ºµË´Ï´Ù.
AssertErrorProc ´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ½À´Ï´Ù.
Type TAssertErrorProc=procedure(const msg,fname:string;lineno,erroraddr:longint); Var AssertErrorProc = TAssertErrorProc;ÀÌ°ÍÀº µð¹ö±ë ¿ëµµ·Î ÁÖ·Î ¾µ ¼ö ÀÖ½À´Ï´Ù. ½Ã½ºÅÛ À¯´ÖÀº AssertErrorProc À» stderr ·Î ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ°í ´Ü¼øÈ÷ Á¾·áÇعö¸®´Â °ÍÀ¸·Î Çڵ鷯¸¦ ¼³Á¤ÇÕ´Ï´Ù. sysutils À¯´ÖÀº 227¹ø ½ÇÇà ½Ã°£ ¿À·ù¸¦ catchÇÏ¿© EAssertionFailed ¿¹¿Ü¸¦ ¹ß»ý½Ãŵ´Ï´Ù.
1.1.5. $CALLING : È£Ãâ ±Ô¾à ÁöÁ¤ ¶ {$CALLING } Áö½ÃÀÚ´Â ÄÄÆÛÀÏ·¯¿¡°Ô ¾Æ¹« È£Ãâ ±Ô¾àÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» ¶§ ¾î¶² È£Ãâ ±Ô¾àÀ» ½á¾ß ÇÏ´ÂÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù.
{$CALLING REGISTER} ±âº»°ªÀº
REGISTER ÀÔ´Ï´Ù. ´ÙÀ½°ú °°Àº È£Ãâ ±Ô¾àÀÌ ÀÖ½À´Ï´Ù.
È£Ã⠱Ծ࿡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ¼³¸íÀº ¼½¼Ç 6.3, 67 ÆäÀÌÁö¿¡ ³ª¿Í ÀÖ½À´Ï´Ù. Ư¼öÇÑ °æ¿ì·Î½á DEFAULT ¸¦ ½á¼ ±âº» È£Ãâ ±Ô¾àÀ¸·Î º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.
1.1.6. $CHECKPOINTER : Check pointer values ¶The
{$CHECKPOINTER} directive turns heap pointer checking on (value ON ) or off (value OFF ).
When heap pointer checking is on and the code is compiled with the -gh (heaptrace) option on, then
a check is inserted when dereferencing a pointer. The check will verify that the pointer contains a
valid value, i.e. points to a location that is reachable by the program: the stack or a location in the
heap. If not, a run-time error 216 or 204 is raised.
If the code is compiled without
-gl switch, then this directive has no effect. Note that this consider-
ably slows down the code.
----
|
You will overcome the attacks of jealous associates. |