·Î±×ÀÎ | ȸ¿ø°¡ÀÔ (´º½º·¹ÅͽÅû) | SITEMAP
   
  °³¹ß   Ç÷§Æû   ½Ã½ºÅÛ   ¸Å´ÏÁö¸ÕÆ®   Àüü±â»ç  
ÀÚ¹Ù
´å³Ý
C/C++
DB
¸ðµ¨¸µ
À¥°³¹ß
±âŸ
À¯´Ð½º/¸®´ª½º
À©µµ¿ì
±âŸ
¼­¹ö
³×Æ®¿öÅ©
º¸¾È
±âŸ
BM
PM
±âŸ
 
±â»çÀúÀå
0
 
¸¶ÀÌ ½ºÅ©·¦
[C¾ð¾îÀÇ ÁøÈ­] ¨ç ÃֽŠC Ç¥ÁØ¡¸C99¡¹

Àü¿õ (ÇÊÀÚ) ( ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î )   2004/09/22
¿¬Àç¼ø¼­
1ȸ. ÃֽŠC Ç¥ÁØ¡¸C99¡¹
2ȸ. C99ÀÇ ½Å±â¼úµé
3ȸ. C99 ÀÌÈÄÀÇ C ¾ð¾î. <³¡>
ÇÊÀÚ°¡ °¡Áö°í ÀÖ´Â °¡Àå ¿À·¡µÈ C ¾ð¾î Ã¥Àº 1970³â´ë¿¡ ÃâÆÇµÈ °ÍÀÌ´Ù. Áö±ÝÀº ÀÚ¹Ù³ª ÆÄÀ̽㠰°Àº °­·ÂÇÑ ±â´ÉÀÇ ÁÁÀº ¾ð¾îµéÀÌ ½ñ¾ÆÁ® ³ª¿Í Áö³ªÄ¡°Ô ±¤¹üÀ§ÇÑ ºÐ¾ß¿¡¼­ »ç¿ëµÇ¾î¿Â C ¾ð¾î°¡ ÀÚ¸®¸¦ ³»¾îÁÖ°í ÀÖÁö¸¸, Áö±Ý±îÁöµµ °­»êÀÌ 3¹ø º¯Çϱâ Àü¿¡ ź»ýÇÑ ¾ð¾î°¡ °¢Á¾ °³¹ß¿¡¼­ °¡Àå ºó¹øÇÏ°Ô ¾²ÀÌ´Â ¾ð¾î·Î ÀÚ¸®¸¦ Áö۰í ÀÖ´Ù´Â »ç½ÇÀÌ Á¶±ÝÀº ºÎÁ¶¸®ÇØ º¸ÀÏ ¼öµµ ÀÖ´Ù.

ÇÏÁö¸¸ ÀÌ ±ÛÀÇ Á¦¸ñ¿¡¼­µµ ¾Ë ¼ö ÀÖµíÀÌ ÀÌ´Â ±â¿ìÀÏ »ÓÀÌ´Ù. ¿ì¸®¿¡°Ô ±× »ç½ÇÀÌ Àß ¾Ë·ÁÁöÁö ¾ÊÀ» »Ó Áö±Ý ÀÌ ¼ø°£¿¡µµ C ¾ð¾î´Â Ãֽбâ¼úµé°ú ºü¸£°Ô º¯È­ÇÏ´Â ÁÖº¯ ȯ°æ¿¡ ÀûÀÀÇϱâ À§ÇØ ÁøÈ­¸¦ °ÅµìÇϰí ÀÖ´Ù. ÀÌ ±Û¿¡¼­´Â °¡Àå ÃÖ±Ù¿¡ C ¾ð¾î¿¡ ÀϾ Ä¿´Ù¶õ ÁøÈ­¿¡ ´ëÇØ »ìÆìº¸·Á ÇÑ´Ù. ±¸Ã¼ÀûÀÎ À̾߱⸦ ½ÃÀÛÇϱâ Àü¿¡ ´õ¿í ½±°Ô ÀÌÇØÇϱâ À§ÇÑ ¸î °¡Áö ±âº»ÀûÀÎ »ç½ÇµéÀ» ¾Ë¾Æº¸ÀÚ. Áö±ÝºÎÅÍ Àá½Ã µ¿¾È ´Ù·ç´Â À̾߱⿡ ³Ê¹«³ªµµ Àͼ÷ÇÑ µ¶ÀÚ¶ó¸é ¿øÇÏ´Â À̾߱Ⱑ ³ª¿Ã ¶§±îÁö °¡»ÓÇÏ°Ô °Ç³Ê¶Ù¾îµµ ÁÁ´Ù.

C ¾ð¾î Ç¥ÁØÈ­ÀÇ ¿ª»ç
À¯´Ð½º¶ó´Â Áö±ÝÀº ³Ê¹«³ªµµ À¯¸íÇÑ ¿î¿µÃ¼Á¦¸¦ ±¸ÇöÇϱâ À§ÇØ C ¾ð¾î°¡ óÀ½ ¸¸µé¾îÁø °ÍÀº 1970³â´ë ÃÊ. Áö±ÝÀ¸·ÎºÎÅÍ 30³â ÀüÀÇ ÀÏÀÌ´Ù. ±× ÀÌÈÄ C ¾ð¾î´Â â½ÃÀÚÀÎ Dennis Ritchie°¡ óÀ½ »ý°¢Çß´ø °Íº¸´Ù ´õ ´Ù¾çÇÑ ºÐ¾ß¿¡¼­ ´Ù¾çÇÑ »ç¶÷µé¿¡ ÀÇÇØ »ç¿ëµÇ°í ¶Ç ¹ßÀüÇß´Ù. ¹°·Ð ¼­·Î ´Ù¸¥ Áý´Ü¿¡ ÀÇÇØ º¯ÇüµÈ C ¾ð¾î°¡ ¿ì¿¬ ȤÀº ÇÊ¿¬¿¡ ÀÇÇØ ¾î´À Á¤µµ °°Àº ÇüŸ¦ °øÀ¯ÇÑ´Ù°í ÇØµµ 1980³â´ë¿¡ µé¾î¼­¸é¼­ °¢ C ¾ð¾îÀÇ ¹æ¾ðµéÀÌ ÀÚ¶ûÇÏ´Â ´Ù¾çÇÑ È®Àå ±â¼úÀº ¼­·Î ȣȯµÇÁö ¾Ê±â¿¡ ÃæºÐÇß´Ù.

°áÁ¤ÀûÀ¸·Î C ¾ð¾î°¡ ¹Ì±¹ Á¤ºÎ ÇÁ·ÎÁ§Æ®¸¦ À§ÇØ »ç¿ëµÇ±â ½ÃÀÛÇϸ鼭 ¹Ì±¹ÀÇ Ç¥ÁØÈ­ ±â±¸ÀÎ ANSI¿¡ ÀÇÇØ C ¾ð¾îÀÇ Ç¥ÁØÈ­°¡ ½ÃÀ۵ȴÙ. À̰ÍÀÌ 1980³â´ë ÃʹÝÀÇ ÀÏÀÌ´Ù. ÀÌÈÄ 5³â ÀÌ»óÀÇ Ç¥ÁØÈ­ °úÁ¤À» °ÅÃÄ Åº»ýÇÑ C ¾ð¾î Ç¥ÁØÀÌ Áö±Ýµµ ¿©·¯ C ¾ð¾î ¼­Àû¿¡¼­ ³Êµµ³ªµµ ÀοëÇÏ´Â ANSI C(Á¤È®È÷´Â ANSI X3.159-1989)ÀÌ´Ù. ÀÌ ÃÖÃÊÀÇ C ¾ð¾î Ç¥ÁØÀÌ 1989³â¿¡ ¹ßÇ¥µÆ±â¿¡ À̸¦ ºñ°ø½ÄÀûÀ¸·Î C89¶ó°í ºÎ¸£±âµµ ÇÑ´Ù. ´ç½Ã C ¾ð¾î°¡ ºñ´Ü ¹Ì±¹¿¡¼­¸¸ Á¦ÇÑÀûÀ¸·Î »ç¿ëµÇ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ¾Æ´Ï¾ú±â¿¡ ±¹Á¦ Ç¥ÁØÈ­ ±â±¸ÀÎ ISO´Â ANSIÀÇ Ç¥ÁØÈ­ °úÁ¤À» °¨µ¶Çß°í, ¸î °¡Áö Çü½ÄÀûÀÎ ºÎºÐ¸¸À» ¹Ù²ã 1990³â ¸í½Ç»óºÎÇÑ ±¹Á¦ Ç¥ÁØÀÎ ISO Ç¥ÁØ(ISO 9899:1990)À» ¹ßÇ¥ÇÑ´Ù. À¯»çÇÏ°Ô À̸¦ C90À̶ó°í ºÎ¸¥´Ù.

C89¿Í C90Àº º»ÁúÀûÀ¸·Î °°Àº ³»¿ëÀ» Àü´ÞÇϱ⿡ Ưº°È÷ ANSI¿Í ISO¸¦ ±¸ºÐÇÏÁö ¾Ê´Â ÀÌ»ó ¼­·Î È¥¿ëµÇ´Â Ç¥ÇöÀÌ´Ù. C90ÀÌ ¹ßÇ¥µÇ¸é¼­ C ¾ð¾îÀÇ Ç¥ÁØÈ­ °úÁ¤Àº °ø½ÄÀûÀ¸·Î ISO(ISO JTC1/SC22/WG14)·Î À̾çµÈ´Ù(¹°·Ð ANSI´Â ISOÀÇ ¹Ì±¹ ´ëÇ¥À̱⿡ ¿µ±¹À» Æ÷ÇÔÇÑ À¯·´, ÀϺ» µî°ú ÇÔ²² °è¼Ó Ç¥ÁØÈ­ °úÁ¤¿¡ Âü¿©ÇÏ°Ô µÈ´Ù). µû¶ó¼­ Ç¥ÁØÈ­µÈ C ¾ð¾î¸¦ ºÎ¸£´Â Á» ´õ ¿Ã¹Ù¸¥ ȣĪÀº ANSI C°¡ ¾Æ´Ñ ISO C³ª Ç¥ÁØ C¶ó°í ÇÒ ¼ö ÀÖ´Ù.

ISO¿¡ ÀÇÇØ °ü¸®µÇ´Â ¸ðµç ±¹Á¦ Ç¥ÁØÀº ÁÖ±âÀûÀ¸·Î Àç°ËÅäµÇ°í °³Á¤µÈ´Ù. ÀÌÈÄ À¯·´À» Áß½ÉÀ¸·Î ÅÍÁ® ³ª¿Â ¡®C90ÀÌ Áö³ªÄ¡°Ô ¹Ì±¹Àû¡¯À̶ó´Â ºÒ¸¸À» ÀáÀç¿ì±â À§ÇØ 1995³â ÀÏÁ¾ÀÇ ºÎ·Ï ÇüÅ·ΠC90ÀÇ È®ÀåÀÌ ¹ßÇ¥µÈ´Ù. À̸¦ Amendment 1(ÁÙ¿©¼­ AMD1)À̶ó°í ºÎ¸£¸ç, C90°ú AMD1À» ÇÕÇØ C95¶ó°í ºÎ¸£±âµµ ÇÑ´Ù. C90 ȤÀº C95°¡ ÀÚ¸®¸¦ Àâ¾Æ°¡´Â µ¿¾È ÀϾ ´Ù¾çÇÑ º¯È­(¿¹¸¦ µé¸é C++¿Í À¯´Ï ÄÚµåÀÇ ¹ßÀü)¸¦ ¼ö¿ëÇϱâ À§ÇØ 90³â´ë Áß¹Ý Ç¥ÁØÈ­ À§¿øÈ¸´Â C Ç¥ÁØÀÇ ´ë´ëÀûÀΠù ¹øÂ° °³Á¤ ÀÛ¾÷¿¡ Âø¼öÇϰí 1999³â 12¿ù¿¡ Áö±Ý ÀÌ ¼ø°£ °ø½ÄÀûÀÎ ±¹Á¦ Ç¥ÁØÀ¸·Î ¿µÇâ·ÂÀ» °®´Â C99(ISO 9899:1999)¸¦ ¹ßÇ¥ÇÏ°Ô µÈ´Ù. ÀÌ 20³â µ¿¾ÈÀÇ º¹Àâ´Ù´ÜÇÑ »ç°ÇÀ» ÁÙÀ̰í ÁÙ¿© ´Ü¼øÇÏ°Ô Ç¥ÇöÇϸé <±×¸² 1>°ú °°´Ù.

<±×¸² 1> C ¾ð¾î Ç¥ÁØÈ­ÀÇ ¿ª»ç

Ç¥ÁØÀÌ ¹ßÇ¥µÈ ÀÌÈÄ ÃÖ¼ÒÇÑ ¼ö³âÀº Èê·¯¾ß Ç¥ÁØÀÌ ½ÇÁ¦ ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡¼­ ¿µÇâ·ÂÀ» ¹ßÈÖÇÏ´Â °ÍÀÌ º¸ÅëÀ̱⿡ C99°¡ ºñ·Ï 5³â Àü¿¡ ¹ßÇ¥µÈ Ç¥ÁØÀÌÁö¸¸, ¾ÆÁ÷µµ ´ëºÎºÐÀÇ °³¹ß ȯ°æÀº C99¸¦ ºÎºÐÀûÀ¸·Î¸¸ Áö¿øÇϰí ÀÖÀ¸¸ç ´Ù¼öÀÇ C ¾ð¾î ¼­ÀûÀº C90À̳ª C95¿¡ ±× »Ñ¸®¸¦ µÎ°í ÀÖ´Ù. ÀϺΠ»ó¿ë ÄÄÆÄÀÏ·¯¸¸ C99¸¦ ¿Ïº®È÷ Áö¿øÇÏ´Â °ÍÀÌ Çö½ÇÀÌÁö¸¸ C99¿¡¼­ µµÀÔµÈ »õ·Î¿î ±â¼úµéÀÌ ±× Æí¸®¼º°ú È¿À²¼ºÀ¸·Î ÀÎÇØ ÀÌ¹Ì ¸¹Àº ÄÄÆÄÀÏ·¯¿¡¼­ È®ÀåÀ¸·Î Á¦°øµÇ´ø °ÍµéÀ̱⿡ »õ·Î¿î ÇÁ·Î±×·¥À» °³¹ßÇÒ ¶§ ÀÌ ½Å±â¼úÀ» Àû±ØÀûÀ¸·Î Ȱ¿ëÇÏ´Â °ÍÀº ±»ÀÌ »óÀ§ ȣȯ¼º(forward compatibility)À» °í·ÁÇÏÁö ¾Ê¾Æµµ ÃæºÐÈ÷ °¡Ä¡ ÀÖ´Â ÀÏÀ̶ó°í º¼ ¼ö ÀÖ´Ù.

C ¾ð¾î Ç¥ÁØÈ­ÀÇ ¿øÄ¢  

C Ç¥ÁØÀÇ °¡Àå Áß¿äÇÑ ¿ªÇÒ Áß Çϳª´Â »õ ±â¼úÀ» °í¾ÈÇØ Ãß°¡ÇÏ´Â °Íº¸´Ù ±âÁ¸ÀÇ ½Ç·Ê(existing practice)¸¦ ´Ùµë¾î Ç¥ÁØÈ­ÇÏ´Â °ÍÀÌ´Ù. ±×·¸´Ù°í ½ÃÁß¿¡ Á¸ÀçÇÏ´Â ¸ðµç ÄÄÆÄÀÏ·¯ÀÇ È®ÀåÀ̳ª ¿©·¯ ÇÁ·Î±×·¡¸Óµé¿¡ ÀÇÇØ Á¦¾ÈµÇ´Â ±â¼úÀ» ¹«Åδë°í µµÀÔÇÒ ¼ö´Â ¾ø´Â ³ë¸©À̱⿡, À§¿øÈ¸´Â ±×·¯ÇÑ ±â¼úµéÀ» C ¾ð¾î Ç¥ÁØ¿¡ ´ã±â À§ÇØ °í¹ÎÇÒ Çʿ䰡 ÀÖ´Â ¿øÄ¢ ¸î °¡Áö¸¦ Á¦½ÃÇϰí ÀÖ´Ù. ¿©±â¼­´Â ±× Áß C99¿¡ »õ·Î µµÀÔµÈ ±â¼úÀ» ¹Ù¶óº¼ ¶§ ¿°µÎ¿¡ µÑ ¸¸ÇÑ ¸î °¡Áö¸¸À» Ãß·Á¼­ ¼Ò°³ÇÑ´Ù.

¡ß ±âÁ¸ÀÇ ÄÚµå´Â Áß¿äÇÏ´Ù. ÇÏÁö¸¸ ±âÁ¸ÀÇ ÄÄÆÄÀÏ·¯´Â Áß¿äÇÏÁö ¾Ê´Ù.
ÀÌ´Â À§¿øÈ¸°¡ »õ·Î¿î ±â¼úÀÇ µµÀÔ ¿©ºÎ¸¦ °áÁ¤ÇÒ ¶§, ÀÌ¹Ì »ç¿ëµÇ°í ÀÖ´Â ÄÄÆÄÀÏ·¯º¸´Ù´Â ³Î¸® ¾²ÀÌ´Â °¡Ä¡ ÀÖ´Â Äڵ带 ´õ °í·ÁÇÑ´Ù´Â »ç½ÇÀ» ÀǹÌÇÑ´Ù. Áï µµÀÔÇÏ·Á´Â »õ ±â¼úÀÌ ÀÌ¹Ì »ç¿ëµÇ°í ÀÖ´Â ÄÄÆÄÀÏ·¯ÀÇ È®Àå°ú Ãæµ¹ÇÏ´Â °æ¿ì´Â ÄÄÆÄÀÏ·¯ÀÇ ¼öÁ¤À» ±â´ëÇÏ¸ç °ú°¨È÷ µµÀÔÇÏÁö¸¸ ÀÌ¹Ì ³Î¸® ¾²À̰í ÀÖ´Â ÄÚµå¿Í Ãæµ¹ÇÏ´Â °æ¿ì¿¡´Â »õ ±â¼ú µµÀÔÀ» Àç°íÇÔÀ» ¶æÇÑ´Ù. Âü°í·Î ¿©±â¼­´Â Ç¥ÁØ¿¡ Àͼ÷ÇÏÁö ¾ÊÀº µ¶ÀÚµéÀ» À§ÇØ ÄÄÆÄÀÏ·¯¶ó´Â ¿ë¾î¸¦ »ç¿ëÇßÁö¸¸, ±×º¸´Ù´Â ÀÓÇø®¸àÅ×À̼Ç(implementation)ÀÌ ´õ Á¤È®ÇÑ °³³äÀ» Ç¥ÇöÇÏ´Â ¿ë¾îÀÌ´Ù.

¡ß Á¶¿ëÇÑ º¯È­¸¦ ÇÇÇÑ´Ù.
»õ ±â¼úÀÌ µµÀԵǴ ſ¿¡ ±âÁ¸ÀÇ »ç¼ÒÇÑ Äڵ尡 ¸í½ÃÀûÀÎ ¿À·ù¸¦ ÀÏÀ¸Å²´Ù¸é ¿ÀÈ÷·Á ¹®Á¦°¡ µÇÁö ¾Ê´Â´Ù. ´ë°³ ÄÄÆÄÀÏ·¯°¡ ÇØ´ç ¿À·ùÀÇ À§Ä¡¿Í ¿øÀαîÁöµµ ÀûÀýÈ÷ ÁöÀûÇØ ÁÙ ¼ö Àֱ⿡ ÇÁ·Î±×·¡¸Ó°¡ Á¶±Ý¸¸ ¼ö°í¸¦ µéÀ̸é À̸¦ °¡º±°Ô ¼öÁ¤ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¿ÀÈ÷·Á °¡Àå À§ÇèÇÑ °ÍÀº »õ ±â¼úÀÌ ±âÁ¸ ÄÚµåÀÇ Àǹ̸¦ Á¶¿ëÈ÷ ¹Ù²Ù¾î¹ö¸®´Â °æ¿ìÀÌ´Ù.

¡ß ±¹Á¦ÀûÀÎ ÇÁ·Î±×·¡¹ÖÀ» Áö¿øÇÑ´Ù.
ÇÁ·Î±×·¡¹Ö ¾ð¾î»Ó ¾Æ´Ï¶ó ÄÄÇ»ÅÍ ºÐ¾ßÀÇ °¡Àå µÎµå·¯Áö´Â Ư¡Àº Áö±ØÈ÷ ¹Ì±¹ ȤÀº ¿µ¾î Áß½ÉÀûÀ̶ó´Â °ÍÀÌ´Ù. ºÐ¸í ÄÄÇ»ÅÍ¿Í À̸¦ ´Ù·ç±â À§ÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î°¡ ¹Ì±¹ ¹× ¿µ¾î ¹®È­±Ç»Ó ¾Æ´Ï¶ó ´Ù¾çÇÑ ±¹°¡¿¡¼­ »ç¿ëµÇ°í Àֱ⿡ C ¾ð¾î´Â ±¹Á¦ÀûÀÎ ÇÁ·Î±×·¡¹Ö ȯ°æ°ú À̸¦ ÅëÇØ È®º¸µÇ´Â ±¹Á¦ÀûÀÎ ½ÃÀåÀ» Àû±ØÀûÀ¸·Î Áö¿øÇϱâ À§ÇØ ³ë·ÂÇϰí ÀÖ´Ù. ´ëÇ¥ÀûÀÎ ¿¹·Î AMD1¸¦ ÅëÇØ ´õ¿í Àß Áö¿øµÇ´Â ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¿Í È®Àå ¹®ÀÚ, C99¿¡¼­ µµÀÔµÈ À¯´Ï ÄÚµå(Á¤È®È÷´Â ISO 10646) µîÀ» µé ¼ö ÀÖ´Ù.

¡ß C90°úÀÇ È£È¯¼ºÀ» À¯ÁöÇÑ´Ù.
ÇÁ·Î±×·¥À̳ª ÆÄÀÏ Çü½ÄÀÌ ÇÏÀ§ ¹öÀü°úÀÇ È£È¯¼ºÀ» À¯ÁöÇÏ´Â °ÍÀÌ Áß¿äÇϵíÀÌ ÇÁ·Î±×·¡¹Ö ¾ð¾î ¿ª½Ã ¸¶Âù°¡Áö´Ù. µû¶ó¼­ C90 Ç¥ÁØÀ» µû¶ó ¿Ã¹Ù¸£°Ô ÀÛ¼ºµÈ ÇÁ·Î±×·¥Àº C99¿¡¼­µµ °ÅÀÇ º¯È­ ¾øÀÌ Ã³À½ ÀǵµµÈ ÇൿÀ» º¸ÀÏ ¼ö ÀÖµµ·Ï ȣȯ¼ºÀ» À¯ÁöÇÏ·Á°í ³ë·ÂÇÑ´Ù.

¡ß C++¿ÍÀÇ È£È¯¼ºÀ» À¯ÁöÇÑ´Ù.
C ¾ð¾î¿Í C++´Â ÀüÇô º°°³ÀÇ À§¿øÈ¸¿¡ ÀÇÇØ °ü¸®µÇ¸ç ¹ßÀüÇϰí ÀÖ´Â µ¶¸³µÈ ¾ð¾îÀÌ´Ù. µû¶ó¼­, C++ÀÇ Ã¢½ÃÀÚÀÎ Bjarne StroustrupÀÇ Ç¥ÇöÀ» ºô¾î C¿Í C++°¡ ¿ª»çÀû ¿ì¿¬¼ºÀ¸·Î ÀÎÇØ °øÅëÁ¡À» °®´Â´Ù°í ÇØµµ ¾ÕÀ¸·Î ¿ÏÀüÈ÷ ´Ù¸¥ ¹æÇâÀ¸·Î ¹ßÀüÇØ³ª°¡µµ ÀüÇô ÀÌ»óÇÑ ÀÏÀÌ ¾Æ´Ï´Ù. ´Ù¸¸ ÇöÀç ½ÇÁúÀûÀÎ ½ÃÀåÀÇ ÀÌÀÍÀ» °í·ÁÇϸé C¿Í C++ »çÀÌÀÇ Â÷À̸¦ °¡±ÞÀû ÁÙ¿©ÁÖ´Â °ÍÀÌ À̵æÀÌ µÇ´Â °æ¿ì°¡ ÀûÁö ¾Ê±â¿¡ °¡±ÞÀû C++¿ÍÀÇ È£È¯¼ºÀ» À¯ÁöÇÏ´Â ¹æÇâÀ¸·Î Ç¥ÁØÈ­°¡ ÁøÇàµÈ´Ù. ÇÏÁö¸¸ ¾ÆÀÌ·¯´ÏÇϰԵµ C99´Â C90º¸´Ù C ¾ð¾î¿Í C++ »çÀÌÀÇ °Å¸®¸¦ ´õ ¹ú·Á ³õ¾Ò´Ù. ÀÌ´Â C++ÀÇ 1998³â Ç¥ÁØÀÌ C90À» ÂüÁ¶Çß´ø °Íó·³ Â÷±â C++ Ç¥ÁØÀÌ C99¸¦ ÂüÁ¶Çϸ鼭 Á¶±ÝÀ̳ª¸¶ ÇØ°áµÉ °ÍÀ¸·Î ±â´ëÇÑ´Ù.

C99ÀÇ »õ ±â¼úµé
ÀÌÁ¦ºÎÅÍ ºÎÁ·ÇϰԳª¸¶ ´ÙÁ®µÐ ±â¹Ý Áö½ÄÀ» ¹ÙÅÁÀ¸·Î C99ÀÇ »õ·Î¿î ±â¼úµéÀ» Â÷·Ê·Î »ìÆìº¸µµ·Ï ÇÏÀÚ. »ç½Ç C90 Ç¥Áذú C99 Ç¥ÁØÀ» ÆîÃijõ°í ÇÑ ÁÙ¾¿ ´ëÁ¶Çذ¡¸ç Â÷ÀÌÁ¡À» ã¾Æº¸¸é »ó´çÈ÷ ¹æ´ëÇÑ ¾çÀÇ Â÷À̸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ½ÇÁ¦ ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡ À¯È¿ÇÑ ¿µÇâÀ» ¹ÌÄ¡´Â º¯È­´Â C99 Ç¥ÁØÀÇ ¸Ó¸®¸»(foreword)¿¡¼­ ³ª¿­Çϰí ÀÖ´Â 50¿©°³·Î Á¤¸®µÉ ¼ö ÀÖ´Ù. ±× Áß ÀϺΠ±â¼úÀº ºÎµ¿¼Ò¼ö ¿¬»ê°ú IEEE 754 Ç¥Áذú °ü·ÃµÈ °í±Þ ±â¼ú¿¡ ´ëÇÑ ±íÀÌ ÀÖ´Â ÀÌÇØ¸¦ ¿ä±¸Çϱ⿡ ÀÌ ¿¬Àç¿¡¼­µµ °Ü¿ì ¼Ò°³¸¸ ÇÒ °èȹÀÌ´Ù. ±âº»ÀûÀ¸·Î Á¦ÇÑµÈ Áö¸é¿¡¼­ ´Ù·ê ±â¼úµéÀº Å©°Ô ´ÙÀ½°ú °°Àº ±âÁØ¿¡ µû¸¥´Ù.

¡ß °ú°Å Ç¥ÁØ(C90À̳ª C95)ÀÇ ´ÜÁ¡À» º¸¿ÏÇϱâ À§ÇØ µµÀÔµÈ »õ ±â¼úÀº ±× ±â¼úÀÇ µµÀÔ ¹è°æÀ» Áß½ÉÀ¸·Î ¼³¸íÇÑ´Ù.
¡ß C++¿¡¼­ ÀÌ¹Ì Áö¿øÇϰí ÀÖ´Â ±â¼úÀº C ¾ð¾î¿¡¼­ÀÇ ¸î °¡Áö Ư¡°ú ÁÖÀÇ»çÇ׸¸À» ¼Ò°³ÇÑ´Ù.
¡ß ÇöÀç ´Ù¼öÀÇ ÄÄÆÄÀÏ·¯°¡ Áö¿øÇϰí ÀÖ°í, ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡¼­ ¸Å¿ì À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö ÀÖ´Â ±â¼úÀº ºñ±³Àû ±¸Ã¼ÀûÀ¸·Î ¼³¸íÇÑ´Ù.
¡ß °¡±ÞÀû °¢ ±â¼úÀÇ ±¸Ã¼ÀûÀÎ ¸ð½ÀÀ» È®ÀÎÇÒ ¼ö ÀÖ´Â ¿¹¸¦ º¸ÀδÙ.

ÀÌ ±ÛÀ» º¸¸é¼­ °¡Àå À¯ÀÇÇØ¾ß ÇÒ »çÇ×Àº ÀÌ ±ÛÀÌ C99ÀÇ »õ ±â¼ú¿¡ ´ëÇÑ ¿Ïº®ÇÑ ¼³¸íÀ» Á¦°øÇÏÁö´Â ¾Ê´Â´Ù´Â »ç½ÇÀÌ´Ù. ÀÌ ±ÛÀÇ ÁÖ¿äÇÑ ¸ñÀûÀº C99°¡ ´ëÃæ ¾î¶°ÇÑ ¸ð½ÀÀ» °¡Áö°í ÀÖ´ÂÁö, C ¾ð¾î°¡ ¾î¶°ÇÑ ¸ð½ÀÀ¸·Î º¯Çذ¡°í ÀÖ´ÂÁö ¤À» ¼ö ÀÖ´Â Å« È帧¸¸À» º¸À̰íÀÚ ÇÏ´Â °ÍÀÌ´Ù. Áö±ÝºÎÅÍ ¼Ò°³ÇÏ´Â ±â¼úÀÇ Á¦¸ñ ¿·¿¡ ºÙÀº Ç¥½Ã´Â ´ÙÀ½°ú °°Àº Àǹ̷Π¾²¿´´Ù.

¡ß Lang : C Ç¥ÁØÀº Å©°Ô ¾ð¾î ºÎºÐ°ú ¶óÀ̺귯¸® ºÎºÐÀ¸·Î ±¸ºÐµÇ¾î ÀÖ´Ù. ½ÇÁ¦ C ¾ð¾îÀÇ ±¸ÇöüÀÎ ÄÄÆÄÀÏ·¯¿Í ¶óÀ̺귯¸®´Â ¼­·Î ¹ÐÁ¢ÇÏ°Ô °ü·ÃµÇ¾î Ä®·Î ÀÚ¸£µíÀÌ ³ª´©±â ¾î·Á¿î °æ¿ì(¿¹¸¦ µé¾î ƯÁ¤ ¶óÀ̺귯¸® ÇÔ¼ö È£Ãâ¿¡ ´ëÇØ ÄÄÆÄÀÏ·¯°¡ ÃÖÀûÈ­µÈ Äڵ带 »ðÀÔÇØ Áְųª ƯÁ¤ ¶óÀ̺귯¸® ÇÔ¼ö°¡ ÄÄÆÄÀÏ·¯¿¡¼­ Á¦°øµÇ´Â ƯÁ¤ ±â¼úÀ» »ç¿ëÇØ¾ß¸¸ ÇÏ´Â °æ¿ì µî)°¡ ¸¹Áö¸¸, Ç¥ÁØÀº ¾ð¾î¸¦ Ãß»óÀûÀÎ °üÁ¡¿¡¼­ ±â¼úÇϰí Àֱ⿡ ¾ð¾î¿Í ¶óÀ̺귯¸®¸¦ ¸íÈ®È÷ ³ª´©°í ÀÖ´Ù. ±× Áß ¾ð¾î ºÎºÐ¿¡ Ãß°¡µÈ º¯È­ÀÏ °æ¿ì ÀÌ¿Í °°Àº Ç¥½Ã°¡ ºÙ´Â´Ù.
¡ß Lib : C Ç¥ÁØÀÇ ¶óÀ̺귯¸® ºÎºÐ¿¡¼­ ÀϾ º¯È­ÀÏ °æ¿ì¿¡ ºÙ´Â´Ù.
¡ß C++ : C++¸¦ ÅëÇØ ÀÌ¹Ì À¯¸íÇØÁø ±â¼úÀÏ °æ¿ì ºÙ´Â´Ù. ´Ù¸¸ C¿Í C++¿¡¼­ Á¦°øµÇ´Â ±â¼úÀÌ Á¤È®È÷ µ¿ÀÏÇÑ Àǹ̸¦ °®´Â °ÍÀº ¾Æ´ÔÀ» À¯ÀÇÇϱ⠹ٶõ´Ù. ¿Ü¾çÀº µ¿ÀÏÇØµµ ¼¼ºÎÀûÀ¸·Î´Â ´Ù¼Ò ´Ù¸¥ ÇൿÀ» °®±âµµ ÇÑ´Ù.
¡ß Open : ¸®´ª½º³ª BSD °°Àº ¿ÀǼҽº ȯ°æ¿¡¼­ Á¦°øµÇ´Â ÄÄÆÄÀÏ·¯¿¡¼­ Á÷Á¢ ȤÀº À¯»çÇÑ ÇüÅ·ΠÀÌ¹Ì Á¦°øµÇ´Â ±â¼úÀÏ °æ¿ì¿¡ ºÙ´Â´Ù. ¹°·Ð ½Ã°£ÀÌ Áö³ª °ÅÀÇ ¸ðµç ȯ°æ¿¡¼­ C99°¡ ¿Ïº®ÇÏ°Ô Áö¿øµÈ´Ù¸é ÀÌ Ç¥½Ã´Â ¹«ÀǹÌÇØÁú °ÍÀÌ´Ù.

ÀÌÁßÀÚ¿Í ¸¦ ÅëÇÑ Á¦ÇÑµÈ ¹®Àڼ Áö¿ø[Lang][Lib][Open]
ÀÌ ±â¼úÀº »ç½Ç C99°¡ ¾Æ´Ñ AMD1¿¡¼­ Ãß°¡µÈ ±â¼úÀÌ´Ù. AMD1´Â C90¿¡ ºÙ´Â ºÎ·Ï ÇüÅ·Π¹ßÇ¥µÈ ¹Ý¸é, C99°¡ »ç½Ç»ó C90ÀÇ Ã¹ ¹øÂ° °³Á¤À̱⿡ AMD1¿¡ Ãß°¡µÈ ÁÖ¿äÇÑ ±â¼úÀÌ C99¿¡µµ ³ª¿­µÈ ¼ÀÀÌ´Ù. Ãʱâ C ¾ð¾î°¡ ±â¹ÝÀ¸·Î µÐ ¹®ÀÚ¼ÂÀº ¿ì¸®¿¡°Ô ³Ê¹« Àͼ÷ÇÑ 7ºñÆ® ¹®ÀÚ¼ÂÀÎ ASCIIÀÌ´Ù(°ø½ÄÀûÀÎ ASCII´Â 7ºñÆ® ¹®ÀÚ¼ÂÀÌ´Ù. ¿ì¸®°¡ ÈçÈ÷ ¾Ë°í ÀÖ´Â 8ºñÆ® ¹®ÀÚ¼ÂÀº ASCIIÀÇ È®Àå ¹öÀüÀ¸·Î º¸Åë ASCII-8À̶ó°í ºÎ¸£¸ç, ÀÌ °æ¿ì ÄÚµå ¹øÈ£ 128¹ø ÀÌÈÄÀÇ ¹®ÀÚ¿¡ ´ëÇÑ À̽ļºÀº º¸ÀåµÇÁö ¾Ê´Â´Ù).

ÇÏÁö¸¸ Àü ¼¼°è ¸ðµç ȯ°æ¿¡¼­ ASCIIÀÇ 128°³ ¹®ÀÚ°¡ °°Àº ÀǹÌ, °°Àº ¸ð¾çÀ¸·Î ¾²ÀÌÁö ¾Ê±â¿¡ ±¹Á¦ÀûÀΠȯ°æÀ» ÁöÇâÇÏ´Â C Ç¥ÁØÀº ASCII¸¦ ¾ð¾îÀÇ ±â¹Ý ¹®ÀÚ¼ÂÀ¸·Î µµÀÔÇÒ ¼ö ¾ø¾ú´Ù. µû¶ó¼­ ¿©·¯ ³ª¶ó¿¡¼­ º¯ÇüµÇ¾î »ç¿ëµÇ´Â ASCIIÀÇ °øÅë ºÎºÐ(ASCIIÀÇ ºÎºÐ ÁýÇÕ)¸¸À» ¹­Àº ISO 646 Invariant SetÀ» ¾ð¾îÀÇ ±â¹Ý ¹®ÀÚ¼ÂÀ¸·Î »ï¾ÒÀ¸¸ç, ÀÌ·Î ÀÎÇØ ÀûÀýÇÏ°Ô Ç¥ÇöÇÒ ¼ö ¾ø´Â 9°³ ¹®ÀÚ¸¦ ISO 646 Invariant Set ³»ÀÇ ¹®ÀÚµé·Î Ç¥ÇöÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ C90¿¡¼­ ƯÀÌÇÑ ÇüÅÂÀÇ »ïÁßÀÚ(trigraph)¸¦ µµÀÔÇÏ°Ô µÈ´Ù. <¸®½ºÆ® 1>Àº ÀÌ·± »ïÁßÀÚ¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥À» º¸¿©ÁÖ°í ÀÖ´Ù.

¸¹Àº °³¹ß ȯ°æÀÌ ³Î¸® ¾²ÀÌÁö ¾Ê´Â »ïÁßÀÚ¸¦ ±âº»ÀûÀ¸·Î ÀνÄÇÏÁö ¾Ê±â¿¡ º°µµÀÇ ¿É¼Ç(gccÀÇ °æ¿ì -ansi -pedantic)À» ÁÖ¾î¾ß ¿Ã¹Ù¸£°Ô ¹ø¿ªµÇÁö¸¸, ÀÌ ÀÌ»óÇÑ ¸ð¾çÀÇ ÇÁ·Î±×·¥ÀÌ ºÐ¸í Ç¥ÁØÀ» µû¸£´Â ¿Ã¹Ù¸¥ ÇÁ·Î±×·¥ÀÓ¿¡ À¯ÀÇÇÏÀÚ.

 <¸®½ºÆ® 1> »ïÁßÀÚ(¹ØÁ٠ģ ºÎºÐ)¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥

ÇÏÁö¸¸ ÀÌ »ïÁßÀÚ´Â ¸ð¾ç ÀÚüµµ ÇÁ·Î±×·¥ÀÇ °¡µ¶¼º(readability)À» ½ÉÇÏ°Ô ¶³¾î¶ß¸± Á¤µµ·Î ÈäÇÒ »Ó´õ·¯ ÄÄÆÄÀÏ·¯°¡ ÇÁ·Î±×·¥À» ÀνÄÇÏ´Â °¡Àå Ãʱ⠴ܰ迡 ¸¶Ä¡ ¿öµåÇÁ·Î¼¼¼­ÀÇ ¹Ù²Ù±â ±â´Éó·³ ¹«½ÄÇÏ°Ô Ã³¸®µÇ±â ¶§¹®¿¡(½ÉÁö¾î ¹®ÀÚ¿­ »ó¼ö ¾È¿¡¼­ÀÇ »ïÁßÀÚµµ ġȯµÈ´Ù) Á¤ÀÛ À̸¦ ÇÊ¿ä·Î ÇÏ´Â °÷¿¡¼­Á¶Â÷ ¿Ü¸é¹Þ°Ô µÆ´Ù. ÀÌ·¸°Ô À¯·´ ÀϺΠ±¹°¡¸¦ Áß½ÉÀ¸·Î »ïÁßÀÚ¿¡ ´ëÇÑ ºÒ¸¸ÀÌ ³ªÅ¸³ªÀÚ ºó¹øÇÏ°Ô »ç¿ëµÇ´Â »ïÁßÀÚ ÀϺθ¦ ´ëüÇϱâ À§ÇØ »õ·Î Ãß°¡µÈ °ÍÀÌ 6°³ÀÇ ÀÌÁßÀÚ(digraph)´Ù. ÀÌÁßÀÚ´Â ±× ÇൿÀÌ ¾ð¾î¸¦ ±¸¼ºÇÏ´Â ´Ù¸¥ ÅäÅ«(token)µé°ú °°´Ù´Â ÀåÁ¡À» °®°í <¸®½ºÆ® 2>¿¡¼­ º¼ ¼ö ÀÖµíÀÌ ¿Ü°üµµ »ó´ëÀûÀ¸·Î ¼ö·ÁÇÏ´Ù.

 <¸®½ºÆ® 2> ÀÌÁßÀÚ(¹ØÁ٠ģ ºÎºÐ)¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥

¶ÇÇÑ ASCII¸¦ Á¦´ë·Î Áö¿øÇÏÁö ¸øÇϴ ȯ°æ¿¡¼­µµ °¡µ¶¼º ³ôÀº ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖµµ·Ï ¾Æ·¡ ¿¹¿¡¼­ º¼ ¼ö ÀÖµíÀÌ »ïÁßÀÚ³ª ÀÌÁßÀÚ¸¦ ÅëÇØ ±â¼úµÇ´Â ¿¬»êÀÚµéÀ» ¸ÅÅ©·Î(¿¹¸¦ µé¸é &&¸¦ À§ÇÑ and, ||¸¦ À§ÇÑ or, ~¸¦ À§ÇÑ compl)·Î Á¦°øÇÏ´Â °¡ Ãß°¡·Î Áö¿øµÈ´Ù.

%:include
// ...
if (isspace(uc) or isalpha(uc))
   flag = compl flag;

´ÙÇེ·´°Ôµµ ¿ì¸®³ª¶óÀÇ ´ë´Ù¼ö ±âº» ÇÁ·Î±×·¡¹Ö ȯ°æÀº ASCIIÀÇ 128°³ ¹®ÀÚ¸¦ Á¦´ë·Î Á¦°øÇϰí Àֱ⿡ »ïÁßÀÚ³ª ÀÌÁßÀÚ È¤Àº ¿Í´Â °Å¸®°¡ ¸Ö´Ù. ´Ù¸¸ Á¾Á¾ »ïÁßÀÚ³ª ÀÌÁßÀÚÀÇ Á¸À縦 ¸ð¸£´Â »óÅ¿¡¼­ ±×¿Í À¯»çÇÑ ÇüÅÂÀÇ Æ¯¼ö ¹®ÀÚ¸¦ ÇÁ·Î±×·¥ ³»¿¡ »ç¿ëÇß´Ù°¡ ÀÌÇØÇÒ ¼ö ¾ø´Â °æ°í ¸Þ½ÃÁö·Î °í¹ÎÇÏ´Â °æ¿ì°¡ Àֱ⿡ ±× Á¸À縸ŭÀº ±â¾ïÇØ µÑ Çʿ䰡 ÀÖ´Ù.

À¯È¿ µ¥ÀÌÅÍÇüÀ» ÅëÇØ ÀÚ¼¼ÇØÁø ¿¡Àϸ®¾î¡ ±ÔÄ¢[Lang][Open]
C ¾ð¾î¿¡¼­ ¿¡Àϸ®¾î¡(aliasing)À̶õ ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ´Â ÇϳªÀÇ ´ë»óü(object)¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â °æ·Î°¡ ´Ù¾çÇÔÀ» ÀǹÌÇÑ´Ù. ÀÌ´Â º¸Åë °ø¿ëü¿Í Æ÷ÀÎÅ͸¦ ÅëÇØ ÀϾ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº ÇÁ·Î±×·¥¿¡¼­´Â ´ë»óü¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â 2°¡Áö ¹æ¹ý(object¸¦ ÅëÇÑ ¹æ¹ý, À̸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ pi¸¦ ÅëÇÑ ¹æ¹ý)ÀÌ Á¸ÀçÇÑ´Ù.

#include

int main(void)
{
   int object = 7903, *pi = &object;
   printf(%d, %d\n, object, *pi);
   return 0;
}

Áß¿äÇÑ °ÍÀº C ¾ð¾î°¡ ¸ðµç °¡´ÉÇÑ ¿¡Àϸ®¾î¡À» Çã¶ôÇØ ÁÖÁö´Â ¾Ê´Â´Ù´Â »ç½ÇÀÌ´Ù. Æ÷ÀÎÅÍÀÇ Á¤·Ä Á¦ÇÑ(alignment restriction) ¹®Á¦´Â Â÷Ä¡Çϰí¶óµµ Ç¥ÁØÀÌ ¿¡Àϸ®¾î¡À» »ó´çÈ÷ Á¦ÇÑÇÏ´Â Å« ÀÌÀ¯ Áß Çϳª´Â ¹Ù·Î ÃÖÀûÈ­¿Í °ü·ÃµÇ¾î ÀÖ´Ù.

 <¸®½ºÆ® 3> ¿¡Àϸ®¾î¡°ú ÃÖÀûÈ­(1)

<¸®½ºÆ® 3>¿¡¼­ ÁÖ¼®ÀÌ ¼³¸íÇÑ´ë·Î another_func()¿¡ ´ëÇÑ È£ÃâÀ» ÃÖÀûÈ­ÇÒ ¼ö ÀÖÀ»±î? ¸¸¾à ´ÙÀ½°ú °°Àº ÇÔ¼ö È£ÃâÀÌ Çã¿ëµÇ´Â °ÍÀ̶ó´Â ÁÖ¼®¿¡¼­ º¸ÀÎ ÃÖÀûÈ­´Â Çã¶ôµÇ¾î¼­´Â ¾È µÉ °ÍÀÌ´Ù.

int i;
func(&i, (float *)&i);   // wrong

ÇÏÁö¸¸ ½ÇÁúÀûÀ¸·Î Áö¿øÇÒ °¡Ä¡°¡ º°·Î ¾ø´Â ¿¡Àϸ®¾î¡À» À§ÇØ È¿À²ÀûÀÎ ÃÖÀûÈ­¸¦ °úµµÇÏ°Ô ¸·´Â °ÍÀº ¾ð¾îÀÇ ¼º´É ¸é¿¡¼­ °áÄÚ ¹Ù¶÷Á÷ÇÏÁö ¾Ê±â¿¡ Ç¥ÁØÀº floatÇü ´ë»óü¸¦ intÇüÀ¸·Î ¿¡Àϸ®¾î¡ÇÏ´Â °ÍÀ» Çã¶ôÇÏÁö ¾Ê´Â´Ù. °á°úÀûÀ¸·Î ÁÖ¼®¿¡¼­ º¸ÀÎ ÃÖÀûÈ­´Â Ç×»ó Çã¶ôµÈ´Ù. Áï Æ÷ÀÎÅÍÀÇ Á¤·Ä Á¦ÇÑ ¹®Á¦°¡ ¾ø´Ù°í ÇØµµ ¾Õ¿¡¼­ º¸ÀÎ °Í °°ÀÌ func()¸¦ È£ÃâÇØ ºÒ¹ýÀûÀÎ ¿¡Àϸ®¾î¡À» ½ÃµµÇÏ´Â ÇÁ·Î±×·¥Àº ÃÖÀûÈ­·Î ÀÎÇØ ÀüÇô ¾û¶×ÇÑ °á°ú¸¦ ¾òÀ» ¼öµµ ÀÖ´Ù. ¹°·Ð ¸ðµç ¿¡Àϸ®¾î¡ÀÌ ±ÝÁöµÇ¾î ¸¶¶¥ÇÑ °ÍÀº ¾Æ´Ï´Ù.

 <¸®½ºÆ® 4> ¿¡Àϸ®¾î¡°ú ÃÖÀûÈ­(2)

¿¹¸¦ µé¾î <¸®½ºÆ® 4>¿Í °°Àº ÇÔ¼ö func()°¡ ÁÖ¾îÁ³À» ¶§, ´ÙÀ½°ú °°Àº ¹«ºÎÈ£/À¯ºÎÈ£ Á¤¼öÇü »çÀÌÀÇ ¿¡Àϸ®¾î¡Àº ÃæºÐÈ÷ Çã¶ôÇÒ °¡Ä¡°¡ ÀÖ´Ù. À̴ ǥÁØÀÌ ¹«ºÎÈ£/À¯ºÎÈ£ Á¤¼öÇüÀÇ ³»ºÎ Ç¥ÇöÀÇ ÇüŸ¦ ¾î´À Á¤µµ º¸ÀåÇϱ⿡ ¿¡Àϸ®¾î¡À» ÅëÇØ ÀÇ¹Ì ÀÖ´Â °á°ú¸¦ ¾òÀ» ¼ö Àֱ⠶§¹®ÀÌ´Ù.

int i;
func(&i, (unsigned int *)&i);   // okay

µû¶ó¼­ ÀÌ °°Àº °æ¿ì¿¡´Â ÄÄÆÄÀÏ·¯°¡ ÇÔ¼ö func() ¾È¿¡¼­ pui¿Í pi°¡ °¡¸®Å°´Â ´ë»óü°¡ ´Ù¸§À» È®½ÅÇÏÁö ¸øÇÏ´Â ÀÌ»ó another_func(*pui);À» another_func(2);À¸·Î ÃÖÀûÈ­ÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÀÌ·¸°Ô C ¾ð¾î´Â ÀϺΠÃÖÀûÈ­¸¦ Á¦ÇÑÇϸ鼭±îÁö Çã¿ëÇØ ÁÙ Çʿ䰡 ÀÖ´Â ¿¡Àϸ®¾î¡°ú ¹«ÀǹÌÇϱ⿡ ±ÝÁöµÇ¾î¾ß ¸¶¶¥ÇÑ ¿¡Àϸ®¾î¡À» ±¸ºÐÇϰí ÀÖÁö¸¸ ºÒÇàÈ÷µµ C90¿¡¼­´Â ±× ±ÔÄ¢ÀÌ ¿Ïº®ÇÏÁö ¸øÇß´Ù.

¿¹¸¦ µé¾î malloc()¸¦ ÅëÇØ µ¿ÀûÀ¸·Î ÇÒ´çµÇ´Â ´ë»óüÀÇ °æ¿ì, ¼±¾ðµÈ ´ë»óü¿Í´Â ´Þ¸® ±âº»ÀûÀ¸·Î °®´Â µ¥ÀÌÅÍÇüÀÌ ¾ø±â ¶§¹®¿¡ ¹«¾ùÀ» ±âÁØÀ¸·Î ¿¡Àϸ®¾î¡À» Çã°¡ ȤÀº ±ÝÁöÇØ¾ß ÇÏ´ÂÁö ºÒºÐ¸íÇß´Ù. µû¶ó¼­ C99¿¡¼­´Â ÀÌ·¯ÇÑ °æ¿ì±îÁöµµ ¸ðµÎ Æ÷¿ëÇÒ ¼ö ÀÖµµ·Ï À¯È¿ µ¥ÀÌÅÍÇü(effective type)À̶ó´Â °³³äÀ» µµÀÔÇØ ¿¡Àϸ®¾î¡ ±ÔÄ¢À» »ó¼¼È÷ ±â¼úÇϰí ÀÖ´Ù. ÇÏÁö¸¸ º¸¿ÏµÈ ±ÔÄ¢ ¿ª½Ã ¿©ÀüÈ÷ °ø¿ëü¿Í °ü·ÃµÈ ¿¡Àϸ®¾î¡À» ¿Ã¹Ù¸£°Ô ´Ù·çÁö ¸øÇØ ÇöÀç Ç¥ÁØÈ­ À§¿øÈ¸´Â ÀÌ ºÎºÐ¿¡ ´ëÇÑ ÇØ°áÃ¥À» ¸¶·Ã Áß¿¡ ÀÖ´Ù(ÀÚ¼¼ÇÑ ¹®Á¦´Â http://groups.google.com/groups?selm=G%25_i7.1992%24T4.16873%40www.newsranger.com Âü°í).

Á¦ÇÑµÈ Æ÷ÀÎÅÍ[Lang][Lib][Open]
Çϵå¿þ¾îÀûÀ¸·Î º´·Ä 󸮸¦ Áö¿øÇϴ ȯ°æ(¿¹¸¦ µé¸é º¤ÅÍ ÇÁ·Î¼¼¼­)¿¡¼­ Á¦°øÇÏ´Â º´·ÄÈ­ ±â´ÉÀ» Á¦´ë·Î Ȱ¿ëÇϱâ À§Çؼ­´Â ±âº»ÀûÀ¸·Î ƯÁ¤ ¿¬»êÀÌ ¹Ýº¹Çؼ­ Àû¿ëµÇ´Â µÎ ¹è¿­ ´ë»óü°¡ ¼­·Î ¹«°üÇØ¾ß ÇÑ´Ù. Áï ±×¿Í °°Àº ȯ°æ¿¡¼­ Á¦°øÇÏ´Â ¼º´É ÁÁÀº ÃÖÀûÈ­ ±â´ÉÀ» ½ÊºÐ Ȱ¿ëÇϱâ À§Çؼ­´Â ƯÁ¤ ¿¬»êÀ» ¼öÇàÇÏ´Â ÇÔ¼ö¿¡ ¸Å°³º¯¼ö¸¦ ÅëÇØ ÁÖ¾îÁö´Â µÎ ¹è¿­ÀÇ ¸ðµç ¿ä¼ÒµéÀÌ ¼­·Î ¿¡Àϸ®¾î¡µÇ¾î¼­´Â ¾È µÈ´Ù´Â ÀǹÌÀÌ´Ù.

C ¾ð¾î¸¦ óÀ½ Ç¥ÁØÈ­ÇÏ´ø ½Ã±â¿¡ ÄÄÆÄÀÏ·¯¿¡°Ô µÎ ´ë»óü°¡ ¼­·Î ¿¡Àϸ®¾î¡µÇÁö ¾Ê¾ÒÀ½À» È®½Å½Ã۱â À§ÇÑ ¹æ¹ýÀ¸·Î noalias¶ó´Â Çü ÇÑÁ¤¾î(type qualifier)¸¦ µµÀÔÇÏ·Á Çß´Ù. ÇÏÁö¸¸ ÀÌ Çü ÇÑÁ¤¾î´Â »ó´çÈ÷ ¾ö°ÝÇÏ°í º¹ÀâÇÑ Àǹ̸¦ °¡Áö°í ÀÖ¾î Á¦´ë·Î ±â¼úÇϱ⵵ ½±Áö ¾Ê¾Ò°í, À̸¦ µµÀÔÇÒ °æ¿ì ¾ð¾î¿¡ ½É°¢ÇÑ ¿ÀÁ¡À» ¸¸µé °¡´É¼ºµµ Àֱ⿡ ½ÉÇÑ ¹Ý´ë¿¡ ºÎµúÇô °á±¹ Ç¥ÁØ¿¡ ÀÔ¼ºÇÏÁö ¸øÇß´Ù(http://www.lysator.liu.se/c/dmr-on-noalias.html Âü°í).

´Ù¸¸ C90ÀÇ ³¡ÀÚ¶ô¿¡ ¼­·Î °ãÃÄÁø µÎ ¹è¿­ ´ë»óü¸¦ ÇÔ¼ö¿¡ Àü´ÞÇÏ´Â °ÍÀº º´·Ä ȯ°æ¿¡¼­ÀÇ ÃÖÀûÈ­¸¦ °í·ÁÇØ º°·Î ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù´Â ÀÏÁ¾ÀÇ Ãæ°í¸¸ÀÌ ÀÚ¸®Àâ°í ÀÖÀ» »ÓÀ̾ú´Ù(<±×¸² 2>).

<±×¸² 2> °ãÃÄÁø ¹è¿­ ´ë»óüÀÇ Àü´Þ

±×·¸°Ô °­·ÂÇÑ ¹Ý´ë ¼Ó¿¡ »ç¶óÁø noaliasÀÇ Àǵµ´Â ÈξÀ À¯¿¬ÇÑ Àǹ̸¦ °®´Â Á¦ÇÑµÈ Æ÷ÀÎÅÍ(restricted pointer)¶ó´Â À̸§À¸·Î C99¿¡¼­ ºÎȰÇÏ°Ô µÈ´Ù. ¹°·Ð ÀÌ¹Ì noalias¸¦ ÅëÇØ ½ÃÇàÂø¿À¸¦ Çѹø °Þ¾ú±â¿¡ noalias¿Í´Â ¸¹ÀÌ ´Ù¸¥ ¹æ¹ýÀ» ÅëÇØ Á¢±ÙÇÏ°Ô µÈ´Ù. Á¦ÇÑµÈ Æ÷ÀÎÅͶõ Æ÷ÀÎÅÍ¿¡¸¸ Àû¿ëµÇ¾î À¯È¿ÇÑ Àǹ̸¦ °®´Â Çü ÇÑÁ¤¾î restrict¸¦ °®´Â Æ÷ÀÎÅ͸¦ ¸»ÇÑ´Ù. ÀÌ·¸°Ô ¼±¾ðµÈ Æ÷ÀÎÅÍÀÇ Á¤È®ÇÑ Àǹ̴ ǥÁØ¿¡¼­Á¶Â÷ »ó´çÈ÷ ¼öÇÐÀûÀ¸·Î ±â¼úµÇ¾î Àֱ⿡ À̰÷¿¡¼­ ¸ðµÎ ´Ù·ç±â¿¡´Â ¹«¸®°¡ ÀÖ´Ù. ´Ù¸¸ ´ë·«ÀûÀÎ Àǹ̸¦ ´ÙÀ½°ú °°ÀÌ ¼³¸íÇÒ ¼ö ÀÖ´Ù.

void func(double *restrict d, cont double *restrict s, size_t n);

ÀÌ ¼±¾ðÀº ÇÔ¼ö func() ¾È¿¡¼­ d°¡ °¡¸®Å³ ¼ö ÀÖ´Â ´ë»óü¿Í s°¡ °¡¸®Å³ ¼ö ÀÖ´Â ´ë»óü°¡ ¼­·Î ¹«°üÇÔÀ» ÀǹÌÇÑ´Ù. ÀÌ·¯ÇÑ º¸ÀåÀ» ÅëÇØ º´·Ä ¿¬»êÀ» ÅëÇÑ ÃÖÀûÈ­°¡ Áö¿øµÇ´Â ȯ°æÀÇ ÄÄÆÄÀÏ·¯´Â d¿Í s°¡ °¢°¢ °¡¸®Å°´Â ´ë»óü¿¡ Àû¿ëµÇ´Â ¿¬»êÀ» º´·ÄÈ­ÇÏ¿© ÃÖÀûÈ­ÇÒ ¼ö ÀÖ´Ù.

¹°·Ð Á¦ÇÑµÈ Æ÷ÀÎÅ͸¦ ¸Å°³º¯¼ö·Î °®´Â ÇÔ¼ö¿¡ °ãÃÄÁø ¹è¿­ ´ë»óü¸¦ Àü´ÞÇÏ´Â ÇàÀ§´Â ÀÌÁ¦ ºÒ¹ýÀÌ µÇ¸ç ¾Õ¼­ »ìÆìº» ¿¡Àϸ®¾î¡°ú °ü·ÃµÈ ¿¹Ã³·³ ¿¹»óÄ¡ ¸øÇÑ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Â ¿øÀÎÀÌ µÉ ¼öµµ ÀÖ´Ù. Âü°í·Î restrict´Â ·¹Áö½ºÅÍ Ã³·³ ÄÄÆÄÀÏ·¯¿¡°Ô ÃÖÀûÈ­¸¦ À§ÇØ ÇÁ·Î±×·¡¸Ó°¡ Á¦°øÇØ ÁÖ´Â ÀÏÁ¾ÀÇ ÈùÆ®ÀÏ »ÓÀÌ´Ù. µû¶ó¼­ restrict¸¦ ÅëÇØ ÀÌ·ê ¼ö ÀÖ´Â ÃÖÀûÈ­¿Í ¹«°üÇÑ È¯°æ(ȤÀº ±×·¯ÇÑ ÃÖÀûÈ­°¡ Á¸ÀçÇÏÁö¸¸ ÄÄÆÄÀÏ·¯ Á¦ÀÛÀÚ°¡ ¹«´É·ÂÇϰųª °ÔÀ¸¸¥ °æ¿ì)¿¡¼­´Â ÄÄÆÄÀÏ·¯°¡ °£´ÜÈ÷ restrict¸¦ ¹«½ÃÇØ ¹ö¸± ¼öµµ ÀÖ´Ù.

Á¦ÇÑµÈ Æ÷ÀÎÅͰ¡ ÇÔ¼ö ¸Å°³º¯¼ö¿¡¼­ »ç¿ëµÇ¸é °á±¹ ÇØ´ç Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ´ë»óü°¡ ¼­·Î °ãÄ¡Áö ¾Ê¾ÒÀ½À» ÀǹÌÇϱ⠶§¹®¿¡ ¼­·Î °ãÃÄÁø ´ë»óü¸¦ ÀÎÀÚ·Î Á־´Â ¾È µÇ´Â ±âÁ¸ÀÇ Ç¥ÁØ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ ±â¼úÇÏ´Â ¹æ¹ýµµ ÈξÀ ¼ö¿ùÇØÁ³´Ù. ¿¹¸¦ µé¾î Ç¥ÁØÀº ¸Þ¸ð¸®ÀÇ ºí·° ´ÜÀ§ º¹»ç¿¡ ´ëÇØ Ưº°È÷ È¿À²ÀûÀÎ ¿¬»êÀ» Á¦°øÇϴ ȯ°æÀ» °í·ÁÇØ ¸Þ¸ð¸® º¹»ç ÇÔ¼ö¸¦ memcpy()¿Í memmove()·Î ³ª´² Á¦°øÇϰí ÀÖ´Ù.

°ãÃÄÁø ¸Þ¸ð¸® °ø°£¿¡¼­µµ ¿Ã¹Ù¸¥ º¹»ç°¡ ÀÌ·ç¾îÁöµµ·Ï Çϱâ À§ÇØ µÎ ¸Þ¸ð¸® °ø°£ÀÌ °ãÃÄ ÀÖÀ½À» È®ÀÎÇÏ´Â °úÁ¤ ÀÚü°¡ ¹«½Ã ¸øÇÒ ¿À¹öÇìµå°¡ µÇ±â ¶§¹®¿¡ ÇÁ·Î±×·¡¸Ó´Â ¸Þ¸ð¸®°¡ °ãÃÄ ÀÖÁö ¾ÊÀ½À» È®½ÅÇÏ´Â °æ¿ì memcpy()¸¦ »ç¿ëÇØ ÀáÀçÀûÀ¸·Î ÁÁÀº ¼º´ÉÀ» ±â´ëÇÒ ¼ö ÀÖ´Ù. °ãÃÄ ÀÖÀ» °¡´É¼ºÀÌ ÀÖ´Â °æ¿ì ¾à°£ÀÇ ¿À¹öÇìµå¸¦ °¨¼öÇÏ°í ¾ÈÀüÇÏ°Ô memmove()¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. µû¶ó¼­ C90¿¡¼­´Â memcpy()ÀÇ ¿øÇüÀ» ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.

memcpy(void *, const void *, size_t);

¸»·Î½á °ãÃÄÁø ¸Þ¸ð¸® ¿µ¿ª »çÀÌÀÇ º¹»ç¸¦ ±ÝÁöÇßÁö¸¸, Á¦ÇÑµÈ Æ÷ÀÎÅÍÀÇ µµÀÔÀ¸·Î ÀÌÁ¦ C99¿¡¼­´Â memcpy()¿Í memmove()°¡ ¼­·Î ´Ù¸¥ ÇüÅÂÀÇ ¿øÇüÀ» °®°í ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

memcpy(void *restrict, const void *restrict, size_t);
memmove(void *, const void *, size_t);

À¯¿¬ÇÑ ¹è¿­ ¸â¹ö[Lang][Open]
±¸Á¶Ã¼¸¦ ¼±¾ðÇ쵂 ±¸Á¶Ã¼ÀÇ ¸â¹ö Áß Çϳª°¡ ¹è¿­À̰í, ¶Ç ÀÌ ¹è¿­ÀÇ Å©±â¸¦ µ¿Àû ÇÒ´çÀ» ÅëÇØ ´Ã¸®°Å³ª ÁÙÀÌ°í ½Í´Ù¸é º¸Åë ´ÙÀ½ Áß ÇÑ °¡Áö ¹æ¹ýÀ» ÅëÇØ ÀÚ·á ±¸Á¶¸¦ ±¸ÇöÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù(À̸¦ struct hackÀ̶ó°í ºÎ¸¥´Ù).

struct foo {
   int number;
   double bar[100];
} *flexible;

flexible = malloc(
   sizeof(struct foo)
   - sizeof(double) * 100
   + sizeof(double) * n);

flexible->number = n;
flexible->bar[n-1] = 0;   // wrong

------------------------------------

struct foo {
   int number;
   double bar[1];
} *flexible;

flexible = malloc(
   sizeof(struct foo) +
   sizeof(double) * (n-1));


flexible->number = n;
flexible->bar[n-1] = 0;   // wrong

ÀÌ¿Í °°Àº ÇÁ·Î±×·¥ ±¸Á¶´Â »ó´çÈ÷ ±ä ±â°£ µ¿¾È ´Ù¾çÇÑ C ÇÁ·Î±×·¥¿¡¼­ ºó¹øÇÏ°Ô »ç¿ëµÇ¾î¿Â ±¸Á¶ÀÓ¿¡µµ ºÒ±¸Çϰí, Ç¥ÁØ C ¾ð¾î¸¦ ¾ö°ÝÇÑ È¯°æ¿¡µµ ¹«¸® ¾øÀÌ Àû¿ëÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇϱâ À§ÇØ ¸ðµÎ À߸øµÈ ±¸Á¶·Î ±ÔÁ¤Çß´Ù. À§¿øÈ¸´Â ÁÂÃø ±¸Á¶°¡ À߸øµÈ ÀÌÀ¯¸¦ ÀϺΠȯ°æ¿¡¼­ ±¸Á¶Ã¼¿¡ Á¢±ÙÇÒ ¶§ ¼±¾ðµÈ ±¸Á¶Ã¼ÇüÀÇ ¸Þ¸ð¸® Àüü(bar[n]ÀÌ ¾Æ´Ñ bar[100] ÀüºÎ)¸¦ ¿ä±¸ÇÒ ¼ö Àֱ⠶§¹®À̸ç, ¿ìÃø ±¸Á¶°¡ À߸øµÈ ÀÌÀ¯´Â ¸â¹ö bar¸¦ ÅëÇØ ÀϾ´Â Æ÷ÀÎÅÍ ¿¬»êÀ» ¼±¾ðµÈ ±¸Á¶Ã¼Çü(bar[n]ÀÌ ¾Æ´Ñ bar[1])¿¡ ¸ÂÃç Á¦ÇÑÇÒ ¼ö Àֱ⠶§¹®À̶ó°í ¼³¸íÇϰí ÀÖ´Ù.

°á±¹ C99 ÀÌÀü¿¡ À§¿Í °°Àº ÇüÅÂÀÇ ÀÚ·á ±¸Á¶¸¦ ±¸¼ºÇÏ´Â À¯ÀÏÇÑ Àû¹ýÇÑ ¹æ¹ýÀº ´ÙÀ½°ú °°ÀÌ Æ÷ÀÎÅ͸¦ »ç¿ëÇØ ¹ø°Å·Î¿î ¸Þ¸ð¸® ÇÒ´ç °úÁ¤À» °ÅÄ¡´Â °Í»ÓÀ̾ú´Ù. ¸Þ¸ð¸® ÇÒ´ç °úÁ¤ÀÌ ¹ø°Å·Ó´Ù´Â °ÍÀº ±×·¸°Ô ÇÒ´ç¹ÞÀº ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÒ ¶§µµ µ¿ÀÏÇÏ°Ô ¹ø°Å·Î¿òÀ» ÀǹÌÇÑ´Ù.

struct foo {
   int number;
   double *bar;
} *flexible;

flexible = malloc(sizeof(struct foo));
flexible->bar = malloc(sizeof(double) * n);
flexible->bar[n-1] = 0;

ÇÏÁö¸¸ Ç¥ÁØÈ­ À§¿øÈ¸ ¿ª½Ã À¯¿¬ÇÑ ¹è¿­ ¸â¹ö¸¦ °®´Â ±¸Á¶Ã¼¸¦ óÀ½ º¸ÀÎ °Íó·³ °£´ÜÇÑ ¸Þ¸ð¸® ÇÒ´çÀ¸·Î ±¸¼ºµÉ ¼ö ÀÖµµ·Ï ÇÒ Çʿ䰡 ÀÖÀ½À» µ¿°¨Ç߱⿡ C99¿¡¼­ ¼­µÑ·¯ ´ÙÀ½°ú °°Àº Àû¹ýÇÑ ÇüŸ¦ µµÀÔÇÏ°Ô µÈ´Ù.

struct foo {
   int number;
   double bar[];   // flexible array member
} *flexible;

flexible = malloc(sizeof(struct foo) + sizeof(double)*n);
flexible->bar[n-1] = 0;

ºñ·Ï À¯¿¬ÇÑ ¹è¿­ ¸â¹ö´Â ±¸Á¶Ã¼ÀÇ ¸¶Áö¸· ¸â¹ö·Î¼­¸¸ Á¸ÀçÇÒ ¼ö ÀÖ´Ù´Â µîÀÇ ´Ù¼Ò ¾ö°ÝÇÑ Á¦¾à°ú À¯¿¬ÇÑ ¹è¿­ ¸â¹ö¸¦ °®´Â ±¸Á¶Ã¼Çü¿¡ Àû¿ëµÇ´Â sizeof ¿¬»êÀÚÀÇ °á°ú µîÀ» µû·Î Á¤ÀÇÇϱâ À§ÇØ ¾ð¾î¸¦ ÀÌÇØÇϱⰡ ´Ù¼Ò ¾î·Á¿öÁ³Áö¸¸, ¾Õ¼­ º¸ÀÎ °£´ÜÇÑ ¿¹¸¦ ÅëÇØ È®ÀÎÇÒ ¼ö ÀÖµíÀÌ »õ·Î µµÀÔµÈ ±â¼úÀº ±× Àǵµ°¡ ÇÁ·Î±×·¥ »ó¿¡¼­ ºÐ¸íÈ÷ µå·¯³ª°í »ç¿ëÇϱ⵵ ÃæºÐÈ÷ Æí¸®ÇÔÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

¾Ï½ÃÀûÀÎ int Á¦°Å[Lang]
C ¾ð¾î´Â ±× »Ñ¸®¸¦ µ¥ÀÌÅÍÇüÀ» °®Áö ¾Ê´Â ¾ð¾î(typeless language)ÀÎ BCPL°ú B¿¡ µÎ°í ÀÖ´Ù. µû¶ó¼­ ¾Ë°Ô ¸ð¸£°Ô ±× ¾ð¾îµéÀÇ Æ¯¼ºÀ» ¹°·Á¹Þ°Ô µÆ´Ù. ±× Áß °¡Àå ´ëÇ¥ÀûÀÎ °ÍÀ¸·Î ²ÅÀ» ¼ö ÀÖ´Â °ÍÀÌ ¹Ù·Î ¾Ï½ÃÀûÀÎ int(implicit int)ÀÌ´Ù. ÀÌ´Â ¸» ±×´ë·Î ¹®¹ý»ó Çü ÁöÁ¤ÀÚ(type specifier)°¡ ³ª¿Í¾ß ÇÏ´Â ÀϺΠ¹®¸Æ¿¡ ¾Æ¹« °Íµµ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é ±âº»ÀûÀ¸·Î int ÇüÀ¸·Î °¡Á¤µÊÀ» ÀǹÌÇÑ´Ù. ¿ì¼± ¾Ï½ÃÀû intÀÇ ¸î °¡Áö ¿ë·Ê¸¦ »ìÆìº¸µµ·Ï ÇÏÀÚ.

foo(void)   /* int func(void)¿Í µ¿ÀÏÇÑ ÀÇ¹Ì */
{
   return 1;
}

bar(a, b)   /* °íÀüÀûÀÎ ÇÔ¼ö Á¤ÀÇ ¹æ½Ä, int bar(a, b)¿Í µ¿ÀÏÇÑ ÀÇ¹Ì */
/* ÀÌ À§Ä¡¿¡ int a, b;°¡ ÀÖ´Â °Í°ú µ¿ÀÏÇÑ ÀÇ¹Ì */
{
   return a + b;
}

void foobar(const i);   /* void foobar(const int i);¿Í µ¿ÀÏÇÑ ÀÇ¹Ì */

C ¾ð¾î´Â ºÐ¸í ±× ¼±Á¶ ¾ð¾î¿Í´Â ´Þ¸® µ¥ÀÌÅÍÇüÀ» Áö¿øÇϱ⿡ ¸¶Ä¡ µ¥ÀÌÅÍÇüÀÌ ¾ø´Â ¾ð¾îÀÎ °Íó·³ Çü ÁöÁ¤ÀÚ¸¦ »ý·«ÇØ int ÇüÀ» ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº »ç¶óÁ®¾ß ¸¶¶¥Çß´Ù. ÇÏÁö¸¸ óÀ½ C Ç¥ÁØÈ­°¡ ÀÌ·ç¾îÁú ´ç½Ã Á¸ÀçÇÏ´ø ÀûÁö ¾ÊÀº ¼öÀÇ ÇÁ·Î±×·¥µéÀÌ ÀÌ ±â¼ú¿¡ ÀÇÁ¸Çϰí ÀÖ¾ú±â¿¡ ÇÏÀ§ ȣȯ¼º(backward compatibility)À» ½ÅÁßÇÏ°Ô °í·ÁÇØ Ç¥ÁØ¿¡¼­ Á¦°ÅÇÏÁö ¸øÇß´Ù.

¹Ý´ë·Î C99¿¡¼­´Â ³Ê¹«³ª °ú°¨ÇÏ°Ô ÀÌ ±â¼úÀÌ Á¦°ÅµÆ´Ù. ¾ð¾î Ç¥ÁØ¿¡ °¡ÇØÁö´Â ±Þ°ÝÇÑ º¯È­¸¦ ¸·±â À§ÇØ Ç¥ÁØÀº ±¸½Ä ±â¼ú(obsolete feature)À̶ó´Â °³³äÀ» »ç¿ëÇÑ´Ù. Áï ÇÏÀ§ ȣȯ¼ºÀ» À§ÇØ ÇØ´ç ±â¼úÀÇ ±ÝÁö¸¦ ÀÏ´ÜÀº À¯º¸ÇÏÁö¸¸ ±× ±â¼úÀÌ °áÄÚ ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù°í ÆÇ´ÜµÇ´Â °æ¿ì, À̸¦ Ç¥ÁØ¿¡ ¸í½ÃÀûÀ¸·Î ±¸½Ä ±â¼ú·Î ±â·ÏÇØ ÇÁ·Î±×·¡¸ÓµéÀÌ ÇÁ·Î±×·¥À» ¼öÁ¤Çϰųª »õ ÇÁ·Î±×·¥À» °³¹ßÇÒ ¶§ ±× ±â¼úÀÇ »ç¿ëÀ» ²¨¸®µµ·Ï ¸¸µå´Â °ÍÀÌ´Ù(´ëÇ¥ÀûÀÎ ¿¹·Î, ÇÔ¼ö ¼±¾ð½Ã¿¡ int func(); ó·³ ¸Å°³º¯¼ö ¸®½ºÆ®¿¡ ¾Æ¹« °Íµµ Àû¾îÁÖÁö ¾Ê´Â °íÀüÀûÀÎ ¼±¾ð ¹æ½ÄÀº C90 ½ÃÀýºÎÅÍ Áö±Ý±îÁö ±¸½Ä ±â¼ú·Î ÁöÁ¤µÇ¾î ÀÖ´Ù).

ÀÌ·¸°Ô ±¸½ÄÀ¸·Î ÁöÁ¤µÈ ±â¼úÀÌ ¿À·£ ½Ã°£À» °ÅÃÄ Áß¿äÇÑ Äڵ忡¼­ »ç¿ëµÇÁö ¾ÊÀ¸¸é ±×¶§ ºñ·Î¼Ò Ç¥ÁØ¿¡¼­ ¾ÈÀüÇÏ°Ô Á¦°ÅµÈ´Ù. ÇÏÁö¸¸ À̹ø ¾Ï½ÃÀû int¸¦ Á¦°ÅÇÏ´Â °úÁ¤Àº ÀÌ·¯ÇÑ ±¸½Ä ±â¼ú·ÎÀÇ ÁöÁ¤ ¾øÀÌ ¹Ù·Î ÀÌ·ç¾îÁ³´Ù´Â Á¡¿¡¼­ ´Ù¼Ò ÆÄ°ÝÀûÀ̶ó°í º¼ ¼ö ÀÖ´Ù. C ¾ð¾îÀÇ ¸¹Àº ºÎºÐÀº ¼­·Î ¿¬°üµÇ¾î Àֱ⿡ ÀÌ ¾Ï½ÃÀûÀÎ intÀÇ Á¦°Å´Â °ð ¾ð¾îÀÇ ´Ù¸¥ ºÎºÐ¿¡ ¶Ç ´Ù¸¥ º¯È­¸¦ °¡Á®¿À°Ô µÈ´Ù. ÀÌ´Â ´ÙÀ½ ȸ¿¡¼­ return ¹®°ú °ü·ÃµÈ º¯È­¿¡¼­ ÀÚ¼¼È÷ »ìÆìº¸°Ô µÉ °ÍÀÌ´Ù.

¸¶Ä¡¸ç
Á¦ÇÑµÈ Áö¸éÀ¸·Î Ä£ÀýÇÑ ¼³¸íÀ» Àü´ÞÇÏÁö ¸øÇÑ ¾Æ½¬¿òÀÌ ³²Áö¸¸, ½ÃÀÛÀθ¸Å­ ÀûÀº ¼öÀÇ C99 ±â¼úÀ» ¼Ò°³Çϸ鼭 ÀÚ¼¼ÇÑ À̾߱⸦ ´ãÀ¸·Á ³ë·ÂÇß´Ù. ´ÙÀ½ºÎÅÍ´Â ´õ ¸¹Àº ±â¼úÀ» ´Ù·ç¾î¾ß Çϱ⿡ µ¶ÀÚµéÀÌ À̹ø ù ¿ø°í¸¦ ÅëÇØ È帧¿¡ Àͼ÷ÇØÁ³´Ù°í °¡Á¤Çϰí Á»´õ ª°í ¸íÈ®ÇÑ ¼³¸íÀ» Àü´ÞÇÒ ¼ö ÀÖµµ·Ï ³ë·ÂÇϰڴÙ. ´ÙÀ½ È£¿¡µµ C99ÀÇ »õ ±â¼ú¿¡ ´ëÇÑ ¼Ò°³°¡ À̾îÁö°í, Ãß°¡·Î ¼Ò°³µÇ´Â ±â¼úÀ» ½ÇÁ¦ ¾î¶² ÄÄÆÄÀÏ·¯¸¦ ÅëÇØ »ç¿ëÇÒ ¼ö ÀÖ´ÂÁöµµ °£´ÜÈ÷ ¾Ë¾Æº¸°Ú´Ù.

À̹ø ¿ø°í¿¡ ´ëÇÑ ¾î¶°ÇÑ ÁöÀûÀ̳ª Áú¹®, ±âŸ Àǰߵµ ȯ¿µÀÌ´Ù. ÇÊÀÚÀÇ ¸ÞÀÏÀ̳ª ȨÆäÀÌÁö °Ô½ÃÆÇÀ» ÅëÇØ ¾Ë·ÁÁÖ¸é ÀÚ¼¼ÇÑ ´äº¯À» µå¸± °ÍÀ» ¾à¼ÓÇÑ´Ù. Âü°í·Î ÀÌ ¿¬Àç´Â µÎ Â÷·Ê¿¡ °ÉÃÄ KLDP ¼¼¹Ì³ª¸¦ ÅëÇØ ¹ßÇ¥Çß´ø ³»¿ëÀ» º¸°­ Á¤¸®ÇÑ °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº http://doc.kldp.org/wiki.php/KLDPConf/20031011°ú http://doc.kldp.org/wiki.php/KLDPConf/20040118¿¡¼­ ¸¸³¯ ¼ö ÀÖ´Ù. @
°ü·Ã±â»ç
[C#°ú Ç÷¡½Ã·Î ¿Â¶óÀÎ °ÔÀÓ ¸¸µé±â] ¨ç µ¨¸®°ÔÀÌÆ® ÀÌÇØ
±ÝÀ¶ SW °³¹ß À§ÇÑ Çʼö ¶óÀ̺귯¸®¡¸C ´º¸Þ¸®Äà 5.5¡¹
ÇÁ·Î±×·¡¸Ó¡¸³íÀïÀÇ ¹ýÄ¢¡¹
[À̸¸¿ëÀÇ Open Mind] ÇÁ·Î±×·¡¹Ö ÁöÇüµµ¸¦ ¹Ù²Ù´Â¡¸ÆÄÀ̽㡹
´ÙÁß ¾²·¹µå¿Í C++
µ¶ÀÚÀÇ°ß ³²±â±â (·Î±×ÀÎ ÈÄ µ¶ÀÚ ÀǰßÀ» ³²±â½Ç ¼ö ÀÖ½À´Ï´Ù.)
¾ÆÀ̵ð ºñ¹Ð¹øÈ£
 
 
?>
[DDD ¨ç] µµ¸ÞÀÎ ÁÖµµ °³¹ß
À©µµ¿ìCE µð¹ö±ë¿¡ °üÇÑ 12°¡Áö...
°¡»óÈ­¿¡ ½ÇÆÐÇÏ´Â 10°¡Áö ÀÌÀ¯
[±â°í]±×¸° ½ºÅ丮Áö·Î °¡´Â±æ
À©µµ¿ìCE °³¹ßÅø¿¡ °üÇÑ 12°¡Áö...
[Ã¥¼Ò°³] À¥ °³¹ßÀÚ¸¦ À§ÇÑ ½ºÇÁ...
'°¡»óÈ­ °ü¸®'¿¡ ´ëÇÑ 10°¡Áö ...
[Weekend TV]'½ºÅ¸Å©·¡ÇÁÆ®' ¼º´ë¹¦»çÀÇ ´ÞÀÎ [00:01:20]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
[¼­¹ü±ÙÀÇ À¯ÄèÇÑ ¸®ºä]'º£Å×¶û' ·¹ÀÎÄÞ VS '½ÅÂü³»±â' TG»ïº¸ÀÇ 'PMP½ÃÀå ÀïÅ»Àü' [00:03:42]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
º¸¾È°­È­ ±¸±Û ¡°À©µµ ¹ö¸®°í À¥À¸...
¡®À©µµXP¡¯½Ã´ë Æó¸·, »ç¿ëÀÚ¿¡°Ô...
ÀÎÅÍ³Ý ¹ðÅ· ºê¶ó¿ìÀú´Â µû·Î ÀÖ´Ù...
¡®³ªÈ¦·Î ¾×ƼºêX¡¯¡¦¼¼°è ÀÎÅͳݰú...
SKT µ¶Á¡ 800MHz Á֯ļö,...
´ÙÀ½ vs Á¶Áßµ¿, Á¤¸éÃæµ¹·Î Ä¡...
[Àλç]¹®È­Ã¼À°°ü±¤ºÎ
BT, 'GSM-CDMA Áö¿ø' ...
SKT '¾ÆÀ̽º¹Ú½º', ÅëÇÕ UC...
2011³â, LCD TV 10´ë ...
´Ù¿ì±â¼ú, À̸ÞÀÏ ¾ÆÄ«À̺ù ¼Ö·ç¼Ç...
 
 
The Korean edition of 'ZDNet' is published under license from CNET Networks, Inc., San Francisco, CA, USA. Editorial items appearing in 'ZDNet Korea' that were originally published in the US Edition of 'ZDNet', 'CNET', and 'CNET News.com' are the copyright properties of CNET Networks, Inc. or its suppliers.
Copyright ¨Ï 2008 CNET Networks, Inc. All Rights Reserved. 'ZDNet', 'CNET' and 'CNET News.com' are trademarks of CNET Networks, Inc.