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

Àü¿õ (ICU ¼®»ç°úÁ¤)   2004/10/20
¿¬Àç¼ø¼­
1ȸ. ÃֽŠC Ç¥ÁØ¡¸C99¡¹
2ȸ. C99ÀÇ ½Å±â¼úµé
3ȸ. C99 ÀÌÈÄÀÇ C ¾ð¾î. <³¡>
[Áöµð³ÝÄÚ¸®¾Æ]Áö³­ ±Û¿¡ ÀÌ¾î ¼Ò°³ÇÒ ±â¼úµéÀº ÀÌÀüÀÇ C ¾ð¾î°¡ °¡Áø ¹®Á¦µé°ú ±× ÇØ°áÃ¥ÀÌ C ¾ð¾î Ç¥ÁØÈ­ÀÇ ¿øÄ¢À» ¸¸Á·ÇÏ¿© C99¿¡ »õ·Î ÀÔ¼ºÇÑ °ÍµéÀÌ´Ù. ÀÚ½ÅÀÌ C ÇÁ·Î±×·¡¹ÖÀ» Çϸ鼭 ´À²¼´ø ½ÇÁúÀûÀÎ ºÒÆíÇÔÀ̳ª À̰÷¿¡¼­ ¼³¸íÇϰí ÀÖ´Â ¹®Á¦¸¦ °æÇè¿¡ ºñÃß¾î ¶°¿Ã¸®¸é¼­ Ç׸ñ ÇϳªÇϳª¸¦ »ìÆìº»´Ù¸é ±â¼úÀûÀÎ ³»¿ëÀÌ ±æ°Ô ÁøÇàµÇ´õ¶óµµ Å©°Ô Áö·çÇÏÁö´Â ¾ÊÀ» °ÍÀÌ´Ù.

¼ö½Ä ¾ø´Â return ¹®ÀÇ Á¦°Å[Lang][Open]
void ÇüÀº ÇÔ¼öÀÇ ¹Ýȯ °ªÀ̳ª ¸Å°³º¯¼ö°¡ ¾øÀ½À» ¸í½ÃÀûÀ¸·Î Ç¥½ÃÇϱâ À§ÇØ »ç¿ëµÈ´Ù. ¿ì¸®¿¡°Ô ³¸¼³Áö ¾ÊÀº ÀÌ void ÇüÀº »ç½Ç C ¾ð¾îÀÇ Ã¹ ¹øÂ° Ç¥ÁØÀÎ C90¿¡¼­ µµÀÔµÈ °ÍÀÌ´Ù. ±×º¸´Ù °ú°Å¿¡´Â ¾Õ¼­ ¼Ò°³Çß´ø ¾Ï½ÃÀûÀÎ int Çü(implicit int)ÀÌ ±× ¿ªÇÒÀ» ´ë½ÅÇß´Ù.

int foo(int param)        bar(int param)
{                              {
   /* ... */                    /* ... */
   return result;             return;
}                                 }

¾Ï½ÃÀûÀÎ int Çü¿¡ ÀÇÇØ ÇÔ¼ö bar()ÀÇ ¹ÝȯÇüÀº foo()¿Í µ¿ÀÏÇÑ int ÇüÀÌ°í ´ÜÁö ±× ¹Ýȯ°ªÀÌ Á¤ÀǵÇÁö ¾ÊÀº °ªÀÏ »ÓÀÌÁö¸¸, ÇÁ·Î±×·¡¸ÓµéÀº °ü·ÊÀûÀ¸·Î ¹ÝȯÇü¿¡ ¾Ï½ÃÀûÀÎ int ÇüÀ» »ç¿ëÇÑ ÇÔ¼ö¸¦(¸¶Ä¡ Áö±ÝÀÇ void bar(int param);ÀÎ °Íó·³) ¹Ýȯ°ªÀÌ ¾ø´Â ÇÔ¼ö·Î »ç¿ëÇϸç ÇÔ¼ö ¾È¿¡¼­ ¼ö½ÄÀÌ µû¶ó¿ÀÁö ¾Ê´Â return ¹®À» »ç¿ëÇØ¿Ô´Ù. ÀÌ·¯ÇÑ °ü·Ê´Â ¾Ï½ÃÀûÀÎ int ÇüÀÌ À¯ÁöµÇ¾ú´ø C95±îÁöµµ Áö¿øµÆÀ¸³ª, C99¿¡¼­ °©ÀÛ½º·´°Ô ¾Ï½ÃÀûÀÎ int ÇüÀ» Á¦°ÅÇϸ鼭 ¹ÝȯÇü¿¡ ¸í½ÃÀûÀ¸·Î void ÇüÀ» ¾²Áö ¾ÊÀº ÇÔ¼ö¿¡¼­ ¼ö½ÄÀÌ ¾ø´Â return ¹®À» ¾²Áö ¸øÇϵµ·Ï ±ÝÁöÇß´Ù. ÀÌ´Â °á°úÀûÀ¸·Î ¹Ù¶÷Á÷ÇÑ º¯È­¶ó°í ÇÒ ¼ö ÀÖÀ¸³ª ±âÁ¸ÀÇ C90À̳ª C95 °üÁ¡¿¡¼­ ºÐ¸íÈ÷ ¿Ã¹Ù¸£´ø Äڵ带 ¹è·ÁÇÏÁö ¾ÊÀº ´Ù¼Ò ´Ù±ÞÇÑ º¯È­À̱⵵ ÇÏ´Ù.

ÇൿÀÌ Á¤ÀÇµÈ À½ÀÇ Á¤¼ö ³ª´°¼À °á°ú[Lang][Open]
Ä£¼÷ÇÑ »ç½ÇÀ̰ÚÁö¸¸ C ¾ð¾îÀÇ ³ª´°¼À ¿¬»êÀÚ´Â ¿ì¸®°¡ ¾Ë°í ÀÖ´Â ¼öÇаú ´Ù¸£´Ù. Áï ÇÇ¿¬»êÀÚ°¡ ¸ðµÎ Á¤¼öÇüÀÎ °æ¿ì ³ª´²¶³¾îÁöÁö ¾Ê´Â °æ¿ì¿¡µµ °á°ú´Â Á¤¼ö·Î ³ª¿Â´Ù. ¶Ç Çϳª ÇÁ·Î±×·¡¸ÓµéÀÌ ½±°Ô Àذí ÀÖ´Â »ç½ÇÀº Á¤¼ö ³ª´°¼À ¿¬»êÀÌ ÀÌ·ç¾îÁú ¶§ µÎ ÇÇ¿¬»êÀÚ Áß Çϳª¶óµµ À½¼ö¶ó¸é ±× °á°ú°¡ ÄÄÆÄÀÏ·¯¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ´Ù´Â »ç½ÇÀÌ´Ù. µÎ ÇÇ¿¬»êÀÚ ¸ðµÎ°¡ ¾ç¼öÀÌ¸ç ³ª¸ÓÁö°¡ ¹ß»ýÇÏ´Â °æ¿ì Ç×»ó ¸òÀÇ ¼Ò¼öÁ¡ ÀÌÇϸ¦ ¹ö·Á¼­ Á¤¼ö °á°ú¸¦ ¾òÁö¸¸, µÑ Áß Çϳª¶óµµ À½¼öÀ̸é(µÑ´Ù À½¼öÀÎ °æ¿ìµµ Æ÷ÇÔ) ¼Ò¼öÁ¡ ÀÌÇϸ¦ ¹ö¸±Áö, ¡¾¡Ä ÂÊÀ¸·Î ¹Ý¿Ã¸²ÀÌ ÀÌ·ç¾îÁúÁö Ç¥ÁØÀÌ Á¤ÀÇÇÏÁö ¾Ê´Â´Ù.

int q = 7 / -3;   /* -2 or -3 */
int r = 7 % -3;   /* 1 or -2 */
/* ´Ü, r == 7 - (q * -3) ¸¦ ¸¸Á· */

ÃÖ´ëÇÑÀÇ À̽ļºÀ» °ÆÁ¤ÇÏ´Â ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» ÅëÇØ ȯ°æ¿¡ ¹«°üÇÏ°Ô ³ª´°¼À°ú ³ª¸ÓÁö ¿¬»êÀÚÀÇ °á°ú¸¦ ¸ñÀû¿¡ ¸Âµµ·Ï Á¶Á¤ÇؿԴÙ(¿¹¿¡¼­ r, q, a, b´Â ¸ðµÎ Á¤¼öÇüÀÌ´Ù).


ÇÏÁö¸¸ À½ÀÇ Á¤¼ö¸¦ ÇÇ¿¬»êÀÚ·Î °®´Â ³ª´°¼À °á°ú¸¦ ¡Ä ÂÊÀ¸·Î ¹Ý¿Ã¸²Çϴ ȯ°æÀÌ C90ÀÌ Á¦Á¤µÉ ´ç½Ã¿¡µµ ¼Ò¼ö¿´´ø ¸¸Å­ C99°¡ Á¦Á¤µÉ ´ç½Ã¿¡´Â ÇÑ Ç¥ÀÇ ¹Ý´ë ¾øÀÌ À½¼ö¸¦ Æ÷ÇÔÇÑ Á¤¼ö ³ª´°¼ÀÀÇ °á°ú¸¦ Ç×»ó ¼Ò¼öÁ¡ ÀÌÇÏ ¹ö¸²À¸·Î Á¤ÀÇÇÒ ¼ö ÀÖ¾ú´Ù. Âü°í·Î Ç¥ÁØÀÌ ¼±ÅÃÇÑ ¹æ½ÄÀº Æ÷Æ®¶õÀ» µû¸£´Â °ÍÀ̸ç, Ç¥ÁØÀÌ ±ÝÁöÇÑ ¹æ½ÄÀº °ú°Å ÆÄ½ºÄ®¿¡¼­ ¸¸³¯ ¼ö ÀÖ´ø ¹æ½ÄÀÌ´Ù.

ÁöÁ¤µÈ ÃʱâÄ¡[Lang][Open]
C ¾ð¾î°¡ Á¦°øÇϰí ÀÖ´Â ¹è¿­À̳ª ±¸Á¶Ã¼ ȤÀº °ø¿ëüÀÇ ÃʱâÈ­ ±ÔÄ¢Àº Áö³ªÄ¡°Ô ¾ö°ÝÇÑ ¸éÀÌ ¾øÁö ¾Ê¾Ò´Ù. ¿ì¼± °ø¿ëüÀÇ °æ¿ì Ç×»ó ù ¹øÂ°·Î ¼±¾ðµÈ ¸â¹ö¸¸À» ÃʱâÈ­ÇÒ ¼ö ÀÖ¾ú´Ù. µû¶ó¼­ ÃʱâÈ­ÇÏ·Á´Â ´ë»óÀÌ ¹Ù²î¸é °ø¿ëüÀÇ ¸â¹ö ¼±¾ð ¼ø¼­¸¦ ¹Ù²ã¾ß¸¸ Çß´Ù.

union { int a; double b; } foo = { 12 };
/* ¸â¹ö int a¸¦ À§ÇÑ ÃʱâÄ¡ */

¶ÇÇÑ ¹è¿­À̳ª ±¸Á¶Ã¼¸¦ ÃʱâÈ­ÇÒ ¶§ Áß°£¿¡ Á¸ÀçÇÏ´Â ¸â¹ö ÀϺθ¸À» ÃʱâÈ­ÇÏ´Â °æ¿ì ±× ÀÌÀüÀÇ ¸ðµç ¿ä¼Ò³ª ¸â¹ö¿¡ ÃʱâÄ¡¸¦ Á¦°øÇؾ߸¸ Çß´Ù.

int a[200] = { /* 100°³ÀÇ Àû´çÇÑ ÃʱâÄ¡ */, 7903, };
/* a[100]À» 7903À¸·Î ÃʱâÈ­ */

ÀÌ·¯ÇÑ ºÒÆíÀ» ÇØ¼ÒÇϰíÀÚ C99¿¡´Â ƯÁ¤ ¸â¹ö³ª ¿ä¼Ò¸¦ Á÷Á¢ ÁöÁ¤ÇØ ÃʱâÄ¡¸¦ Á¦°øÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù.

union { int a; double b; } foo = { .b = 3.14159 };
int a[200] = { [100] = 7903 };

ÀÌ·¸°Ô ÁöÁ¤µÈ ¸â¹ö¿¡ ´ëÇØ ÃʱâÄ¡¸¦ Á¦°øÇÏ´Â ¹æ½ÄÀº ´ÙÀ½ È£¿¡ ¼Ò°³ÇÒ º¹ÇÕ »ó¼ö(compound literal)¿Í ÇÔ²² ÇÁ·Î±×·¥¿¡ °­·ÂÇÑ À¯¿¬¼ºÀ» Á¦°øÇÒ ¼ö ÀÖ´Ù. ¹°·Ð ¿©±â¼­´Â °£´ÜÈ÷ ´Ü¼ø ¹è¿­°ú ±¸Á¶Ã¼¿¡ ´ëÇÑ ¿¹¸¦ º¸¾ÒÀ¸³ª ¹è¿­À» ¸â¹ö·Î Æ÷ÇÔÇÏ´Â ±¸Á¶Ã¼ µîÀÇ °æ¿ì¿¡µµ ÀÌ ¹æ¹ýÀº Àç±ÍÀûÀ¸·Î Àû¿ëµÈ´Ù.

ÁýÇÕü³ª °ø¿ëü ÃʱâÄ¡ÀÇ Á¦ÇÑ ¿ÏÈ­[Lang][Open]
ÇÔ¼ö ³»ºÎ¿¡¼­ ¼±¾ðµÇ¾î ÀÚµ¿ ±â¾ï ¼ö¸í(auto storage duration)À» °®´Â ½ºÄ®¶óÇü(scalar type)ÀÇ º¯¼ö´Â ÃʱâÄ¡°¡ »ó¼ö ¼ö½ÄÀÌ ¾Æ´Ï¾îµµ »ó°ü¾ø´Ù. ÇÏÁö¸¸ ÁýÇÕü(aggregate, ¹è¿­°ú ±¸Á¶Ã¼¸¦ ¹­¾î ºÎ¸£´Â ¿ë¾î)³ª °ø¿ëüÀÇ °æ¿ì¿¡´Â ±â¾ï ¼ö¸íÀÌ Á¤Àû(static)ÀÌ ¾Æ´Ñ °æ¿ì¿¡µµ ¾ð¾îÀÇ º¹À⼺À» Á¦°ÅÇÑ´Ù´Â ÀÌÀ¯·Î ÃʱâÄ¡¸¦ »ó¼ö ¼ö½ÄÀ¸·Î Á¦ÇÑÇØ¿Ô´Ù. C99´Â ÀÚµ¿ ±â¾ï ¼ö¸í¿¡ ÇÑÇØ¼­ ÁýÇÕü³ª °ø¿ëüÀÇ ÃʱâÄ¡°¡ »ó¼ö ¼ö½ÄÀÌ ¾Æ´Ò ¼ö ÀÖµµ·Ï Çã¿ëÇϰí ÀÖ´Ù.

int base = 12;
int static_duration[10] =
    { base+1, base+1, base+2, base+3, };    /* wrong in C90/C99 */

void foo(void)
{
    int local_base = 79;
    int auto_duration[10] =
      { base+1, base+1, base+2, base+3, };    /* okay in C99 */
    /* ... */

ÀÚµ¿ ±â¾ï ¼ö¸íÀÇ ÁýÇÕüÇü ÃʱâÄ¡¸¦ »ó¼ö ¼ö½ÄÀ¸·Î Á¦ÇÑÇÏÁö ¸»ÀÚ´Â ¿ä±¸´Â »ç½Ç C90 ½ÃÀýºÎÅÍ ÀÖ¾ú±â¿¡ ±»ÀÌ C99¸¦ Áö¿øÇÏÁö ¾Ê´Â ȯ°æ¿¡¼­µµ È®ÀåÀ» ÅëÇØ ÀÌ ±â¼úÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

C++ ½ºÅ¸ÀÏÀÇ ÁÖ¼®[Lang][Open][C++]
C90Àº C++ ½ºÅ¸ÀÏÀÇ ÁÖ¼®À» Áö¿øÇÏÁö ¾Ê¾Ò´Ù. ÇÏÁö¸¸ C++°¡ ³Î¸® Àα⸦ ¾òÀ¸¸é¼­ C¿¡¼­µµ C++ ÇüÅÂÀÇ ÁÖ¼®À» »ç¿ëÇÏ´Â »ç¶÷ÀÌ ´Ã°Ô µÇ¾ú°í ´ëºÎºÐÀÇ C/C++ ÄÄÆÄÀÏ·¯´Â Ưº°È÷ C90À̳ª C95¸¦ ¾ö°ÝÈ÷ Áö۵µ·Ï ¿É¼ÇÀ» ÁÖÁö ¾Ê´Â ÀÌ»ó C ÇÁ·Î±×·¥¿¡¼­µµ C++ ÁÖ¼®À» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¹è·ÁÇØ¿Ô´Ù. C99´Â ÀÌ·¯ÇÑ °ü·Ê¸¦ ¹Þ¾ÆµéÀ̰í, µ¿½Ã¿¡ C¿Í C++ »çÀÌÀÇ Â÷À̸¦ ÃÖ¼ÒÈ­Çϱâ À§Çؼ­ º»°ÝÀûÀ¸·Î C¿¡ C++ ÁÖ¼®À» µµÀÔÇÏ°Ô µÈ´Ù. ½ÇÁúÀûÀÎ ÇÁ·Î±×·¥¿¡ ¿µÇâÀ» ÁÖ´Â °æ¿ì°¡ µå¹°±â´Â ÇØµµ ÀÌ ÀÛÀº º¯È­´Â ÀÌÀü È£¿¡¼­ ¾ð±ÞÇß´ø ¡®Á¶¿ëÇÑ º¯È­¡¯¿¡ ÇØ´çÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ÇÁ·Î±×·¥Àº C90/C95¿Í C99(ȤÀº C++)¿¡¼­ ´Ù¸¥ °á°ú¸¦ º¸ÀδÙ.


¸¹Àº »ç¶÷µéÀÌ C/C++ ÁÖ¼®ÀÇ ±¸ºÐ ¾øÀÌ C99 ¹ßÇ¥ ÀÌÀüºÎÅÍ C ÇÁ·Î±×·¥¿¡¼­ C++ ÁÖ¼®À» »ç¿ëÇØ ¿ÔÁö¸¸ »ç½Ç»ó C++ ÁÖ¼®Àº C99¸¦ Áö¿øÇϴ ȯ°æ¿¡¼­¸¸ Àû¹ýÇÏ°Ô C ÇÁ·Î±×·¥¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â »ç½ÇÀ» ±â¾ïÇÒ Çʿ䰡 ÀÖ´Ù. ¿¹¸¦ µé¾î Ç¥ÁØ(C90/C95)À» ÁؼöÇϸç ÃÖ¼ÒÇÑÀÇ È®ÀåÀ» Áö¿øÇÏ´Â °³¹ß ȯ°æ¿¡¼­´Â ¿©ÀüÈ÷ C ¾ð¾î °íÀ¯ÀÇ ÁÖ¼®¸¸À» Çã¶ôÇϸç ÇÁ·Î±×·¡¸ÓÀÇ À߸øµÈ ½À°üÀ¸·Î C++ ÁÖ¼®À» ´Ù¼ö »ç¿ëÇÑ C ÇÁ·Î±×·¥À» ÇØ´ç ȯ°æÀ¸·Î ¿Å±â´Â ÀÛ¾÷Àº ¿©°£ °í¿ªÀÌ ¾Æ´Ò ¼ö ¾ø´Ù.

¾Ï½ÃÀûÀÎ ÇÔ¼ö ¼±¾ð Á¦°Å[Lang][Open]
Çö´ë ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¿øÄ¢ Áß Çϳª´Â ÇÁ·Î±×·¥¿¡¼­ »ç¿ëµÇ´Â ¸ðµç ¸íĪÀº ÀûÀýÇÏ°Ô ¼±¾ðµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù(±×·¡¾ß ÀûÀýÇÑ µ¥ÀÌÅÍÇü °Ë»ç¸¦ ÅëÇØ ¾ÈÁ¤¼ºÀ» È®º¸Çϱ⠿ëÀÌÇØÁø´Ù). ÇÏÁö¸¸ C ¾ð¾î´Â ±× ½ÃÀÛÀ» µ¥ÀÌÅÍÇüÀ» °®Áö ¾Ê´Â BCPL, B ¾ð¾î¿¡ µÎ°í Àֱ⿡ ÇÔ¼ö ¼±¾ð°ú °ü·ÃµÈ ºÎºÐ¿¡¼­µµ ÀÌÀü¿¡ ´Ù·ç¾ú´ø ¾Ï½ÃÀûÀÎ int Çü°ú À¯»çÇÑ Æ¯Â¡À» °®´Â´Ù.


ÀÌ ¿¹¿¡¼­ º¼ ¼ö ÀÖµíÀÌ ¸¸¾à ¾î¶² ÇÔ¼ö foo()°¡ ¼±¾ðÀÌ Á¦°øµÇÁö ¾ÊÀº »óÅ¿¡¼­ È£ÃâµÇ¸é ±× ÇÔ¼ö°¡ È£ÃâµÇ´Â °¡Àå ¾ÈÂÊ Åë¿ë¹üÀ§(scope)¿¡ ¿ÜºÎ ¿¬°á(external linkage)À» °®°í Á¤¼öÇüÀ» ¹ÝȯÇÏ¸ç ¸Å°³º¯¼ö¿¡ ´ëÇÑ Á¤º¸°¡ ¾Ë·ÁÁöÁö ¾ÊÀº ÇÔ¼ö ¼±¾ð(¾Ï½ÃÀûÀÎ ÇÔ¼ö ¼±¾ð)ÀÌ Á¸ÀçÇÏ´Â °Íó·³ µ¿ÀÛÇÑ´Ù.

¶ÇÇÑ ¸¸¾à ½ÇÁ¦ ÇÔ¼öÀÇ Á¤ÀÇ ÇüŰ¡ ¾Ï½ÃÀûÀÎ ÇÔ¼ö ¼±¾ð°ú ȣȯµÈ´Ù¸é ÇÁ·Î±×·¥ ÀÚü´Â ±â¼úÀûÀ¸·Î ¿Ã¹Ù¸¥ ±¸Á¶°¡ µÈ´Ù. ÇÏÁö¸¸ ÀÌ·± ±¸Á¶´Â ¾Ï½ÃÀûÀÎ ÇÔ¼ö ¼±¾ðÀÌ Çã¿ëµÇ´ø ½ÃÀý¿¡µµ ±×¸® ¹Ù¶÷Á÷ÇÏÁö ¾ÊÀº °ÍÀ¸·Î ÀÎ½ÄµÇ¾î ¿Ô±â¿¡ C99¿¡¼­´Â ¸ðµç ÇÔ¼ö°¡ ºüÁü¾øÀÌ È£Ãâ Àü¿¡ ÀûÀýÈ÷ ¼±¾ðµÇµµ·Ï ¿ä±¸Çϰí ÀÖ´Ù. À̹ø¿¡µµ Ç¥ÁØÀº ¾Ï½ÃÀûÀÎ ¼±¾ðÀ» ±¸½Ä ±â¼ú·Î ±ÔÁ¤ÇÏ´Â ±â°£ ¾øÀÌ °©ÀÛ½º·´°Ô Á¦°ÅÇßÀ¸³ª ´Ù¼öÀÇ ÄÄÆÄÀÏ·¯´Â ÀûÀýÇÑ °æ°í ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ¸ç °è¼Ó ¾Ï½ÃÀûÀÎ ÇÔ¼ö ¼±¾ðÀ» Áö¿øÇÔÀ¸·Î½á Á¡Â÷ ±ÝÁöÇØ³ª°¥ °ÍÀ¸·Î º¸ÀδÙ.

¼±¾ð°ú ¹®Àå ¼¯¾î ¾²±â[Lang][Open][C++]
C´Â C++¿Í ´Þ¸® ¸ðµç ºí·°(block, compound statement) ³»¿¡¼­ ¼±¾ðÀ» ¹®À庸´Ù ¾Õ¿¡ µÎ¾î¾ß ÇÑ´Ù´Â ´Ù¼Ò ¾ö°ÝÇÑ ±ÔÄ¢À» °¡Áö°í ÀÖ¾ú´Ù. ÀÌ·¯ÇÑ ±ÔÄ¢ÀÌ ¼±¾ðÀ» ÇÑ °÷¿¡ ÁýÁß½ÃŲ´Ù´Â ÀåÁ¡À» °®Áö¸¸ µ¿½Ã¿¡ ÇÔ¼öÀÇ ±æÀ̰¡ ±æ¾îÁö´Â °æ¿ì ¼±¾ðÀ» È®ÀÎÇϱâ À§ÇØ ¸Å¹ø ÇÔ¼öÀÇ ½ÃÀÛ ºÎºÐÀ» ã¾ÆºÁ¾ß ÇÑ´Ù´Â ´ÜÁ¡À» °®´Â´Ù. ¹°·Ð ÇÑ ÇÔ¼ö°¡ ´ã´çÇÏ´Â ÀÏÀÌ ³í¸®ÀûÀ¸·Î ±¸ºÐµÈ ¸î °³ÀÇ ÀÛ¾÷À¸·Î ³ª´µ´Â °æ¿ì ´ÙÀ½°ú °°ÀÌ ÁßøµÈ ºí·ÏÀ» »ç¿ëÇØ ÇÁ·Î±×·¥ÀÇ °¡µ¶¼ºÀ» ³ôÀÌ´Â °Íµµ °¡´ÉÇÏ´Ù.

double foo(void)
{
    double result, sum;

    {    /* ù ¹øÂ° ³í¸®Àû ´ÜÀ§ ÀÛ¾÷ */
        int first_result;
    /* ... */
    }
    {    /* µÎ ¹øÂ° ³í¸®Àû ´ÜÀ§ ÀÛ¾÷ */
        int second_result;
        /* ... */
    }
    /* ... */

±×·¸Áö¸¸ C++¸¦ ºñ·ÔÇÑ ¿äÁòÀÇ ¾ð¾îµéÀÌ ±×·¯ÇϵíÀÌ ¹®Àå°ú ¼±¾ðÀ» ¼¯¾î¼­ ¾µ ¼ö ÀÖµµ·Ï Çã¶ôÇÏ´Â °ÍÀÌ ½Çº¸´Ù´Â µæÀÌ ´õ ¸¹´Ù´Â ÆÇ´Ü ¾Æ·¡ C++¿Í ¸¶Âù°¡Áö·Î ¹®Àå°ú ¼±¾ðÀ» ¼¯¾î ¾µ ¼ö ÀÖµµ·Ï Çã¿ëÇÏ°Ô µÆ´Ù.

double foo(void)
{
    double result, sum;

    /* ù ¹øÂ° ³í¸®Àû ´ÜÀ§ ÀÛ¾÷ */
    int first_result;
    /* ... */

    /* µÎ ¹øÂ° ³í¸®Àû ´ÜÀ§ ÀÛ¾÷ */
    int second_result;
    /* ... */

¹°·Ð ÀÌó·³ ¹®Àå°ú ¼±¾ðÀ» ¼¯¾î »ç¿ëÇÒ ¶§´Â ±× µµÀÔ ÃëÁö¸¦ ºÐ¸íÈ÷ ÀÌÇØÇØ ÇÁ·Î±×·¥ÀÇ °¡µ¶¼ºÀ» ÁõÁø½ÃŰ´Â ¹æÇâÀ¸·Î »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ ±â¼úÀÇ °æ¿ì ¾ç³¯ÀÇ Ä®°ú °°±â¿¡ À߸ø »ç¿ëÇÒ °æ¿ì ÇÁ·Î±×·¥À» ÀÌÇØÇÏ±â ¾î·Æ°Ô ¸¸µå´Â ºÎÀÛ¿ëÀ» ³ºÀ» ¼öµµ ÀÖ´Ù.

°¡º¯ ÀÎÀÚ ¸ÅÅ©·Î[Lang][Open]
C90/C95´Â printf()ó·³ °¡º¯ ÀÎÀÚ¸¦ ¹Þ´Â ÇÔ¼ö¸¦ Ç¥ÁØ ¶óÀ̺귯¸®ÀÎ ¸¦ ÅëÇØ Áö¿øÇÏÁö¸¸ °¡º¯ ÀÎÀÚ¸¦ ¹Þ´Â ¸ÅÅ©·Î ÇÔ¼ö(function-like macro)´Â Áö¿øÇÏÁö ¾Ê¾Ò´Ù. ¸ÅÅ©·Î¿¡ °¡º¯ ÀÎÀÚ¸¦ Çã¿ëÇÏ´Â °æ¿ì µð¹ö±ë¿¡ ºó¹øÇÏ°Ô »ç¿ëµÇ´Â ¸ÅÅ©·Î ÇÔ¼ö µîÀ» ¼Õ½±°Ô ÀÛ¼ºÇÒ ¼ö Àֱ⿡ ´Ù¼öÀÇ ÄÄÆÄÀÏ·¯´Â È®ÀåÀ» ÅëÇØ ³ª¸§´ë·Î ±× ¹æ¹ýÀ» Á¦°øÇØ ¿Ô´Ù. ÇÏÁö¸¸ À̽ļºÀ» °í·ÁÇÏ´Â ÇÁ·Î±×·¥Àº ¹Ýµå½Ã °¡º¯ ÀÎÀÚ ¸ÅÅ©·Î°¡ ÇÊ¿äÇÑ °æ¿ì ´ÙÀ½°ú °°Àº Æí¹ýÀ» ÅëÇØ ¿øÇÏ´Â ¹Ù¸¦ ÀÌ·ç±âµµ Çß´Ù.

#define debug(args) printf args      #define comma ,
debug(("%d, %d\n", i, j));           #define debug(s, args) printf(s, args)
                                                 debug("%d, %d\n", i comma j);

°¡º¯ ÀÎÀÚ ¸ÅÅ©·ÎÀÇ Çʿ伺Àº C90 ½ÃÀýºÎÅÍ Á¦±âµÇ¾î ¿ÔÀ¸³ª C99¿¡ ¿Í¼­¾ß ±× ¿ä±¸°¡ ¹Þ¾Æµé¿©Á® ÀÌÁ¦ ÄÄÆÄÀÏ·¯ÀÇ È®Àå¿¡ ÀÇÁ¸ÇÒ ÇÊ¿ä ¾øÀÌ °¡º¯ ÀÎÀÚ ¸ÅÅ©·Î¸¦ ±¸ÇöÇÒ ¼ö ÀÖ´Â ÅëÀÏµÈ ¹æ¹ýÀÌ »ý°å´Ù.

#define debug(s, ...) printf(s, __VA_ARGS__)

ÀÌ ¹æ¹ýÀº ¿¡¼­¿Í À¯»çÇÑ ¹æ½ÄÀ» »ç¿ëÇÑ´Ù´Â ÀåÁ¡À» °®Áö¸¸ ±âÁ¸ÀÇ ÄÄÆÄÀÏ·¯ È®Àå¿¡¼­ ã¾Æº¸±â ¾î·Á¿î ÇüÅÂÀ̱⿡ C99¸¦ ÀüÇô Áö¿øÇÏÁö ¾Ê´Â ÄÄÆÄÀÏ·¯¿¡¼­´Â »ç¿ëÀÌ ºÒ°¡´ÉÇÏ´Ù´Â ´ÜÁ¡À» °®´Â´Ù. ¸¸¾à »ç¿ë ÁßÀÎ ÄÄÆÄÀÏ·¯°¡ C99¿¡ ºÎÇÕÇÏ´Â ¹æ¹ý°ú ±âÁ¸ÀÇ È®ÀåÀ» ¸ðµÎ Á¦°øÇÑ´Ù¸é °ú°¨È÷ Ç¥ÁØÀÌ Á¦°øÇÏ´Â ¹æ¹ýÀ» ¼±ÅÃÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.

ºó ¸ÅÅ©·Î ÀÎÀÚ[Lang][Open]
°¡º¯ ÀÎÀÚ ¸ÅÅ©·Î¿Í ´õºÒ¾î ¸ÅÅ©·Î ÇÔ¼ö¿¡¼­ À¯¿ëÇÏ°Ô »ç¿ëµÇ´Â °Í Áß Çϳª°¡ ºó ¸ÅÅ©·Î ÀÎÀÚÀÌ´Ù(ÀÌ °æ¿ì ÇØ´ç ¸ÅÅ©·Î¿¡¼­ ±âº»°ªÀ» Á¦°øÇÏ´Â °³³äÀÌ ¾Æ´Ï¶ó ÀÏÁ¾ÀÇ ºó ÅäÅ«ÀÌ Á¦°øµÇ´Â ¹æ½ÄÀÌ´Ù). ¸ÅÅ©·Î ÇÔ¼ö¿¡¼­ ÀÎÀÚ °³¼ö¿Í ¸Å°³º¯¼ö°¡ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇØ¾ß ÇÑ´Ù´Â ±ÔÄ¢À¸·Î ºó ¸ÅÅ©·Î ÀÎÀÚ¸¦ Á¦°øÇÏ´Â °Í ¿ª½Ã ±×µ¿¾È ºñÇ¥ÁØÀÎ ÄÄÆÄÀÏ·¯ È®ÀåÀ» ÅëÇØ »ç¿ëÇØ¿Ô´Ù. C99¿¡¼­´Â °¡º¯ ÀÎÀÚ ¸ÅÅ©·Î¸¦ µµÀÔÇϸ鼭 µ¿½Ã¿¡ ºó ¸ÅÅ©·Î ÀÎÀÚµµ Çã¿ëÇÑ´Ù.

#define decl_ptr(prefeix, num) \
    char *prefix ## num = #num
decl_ptr(element, 13);
    /* char *element13 = "13"; */
decl_ptr(element, );
    /* char *element = ""; */

ÀÌ ¿¹´Â ºó ¸ÅÅ©·Î ÀÎÀÚ¸¦ »ç¿ëÇÏ´Â ¸ð½ÀÀ» º¸¿©ÁÖ´Â °ÍÀ¸·Î µÎ ¹øÂ° decl_ptr() È£ÃâÀº ºó ¸ÅÅ©·Î ÀÎÀÚ¸¦ Áö¿øÇÏÁö ¾Ê´Â C90/C95¿¡¼­´Â À߸øµÈ °ÍÀÌ´Ù(¹°·Ð ´Ù¼öÀÇ C90/C95 ÄÄÆÄÀÏ·¯°¡ È®ÀåÀ» ÅëÇØ À̸¦ Áö¿øÇϰí´Â ÀÖ´Ù).

printf()ÀÇ %lf Áö¿ø[Lib][Open]
¸¹Àº C ÇÁ·Î±×·¡¸ÓµéÀÌ È¥µ¿ÇÏ´Â °Í Áß Çϳª°¡ double ÇüÀ» printf()¸¦ ÅëÇØ ÀμâÇÒ ¶§ ´ÙÀ½°ú °°Àº ¹æ½ÄÀ» »ç¿ëÇÑ´Ù´Â °ÍÀÌ´Ù.

printf("%lf\n", 3.14159);    /* wrong in C90 */

ÀÌ´Â ±âº»ÀûÀ¸·Î %f°¡ float Çü¿¡ ´ëÀÀÇϱ⠶§¹®¿¡ À̺¸´Ù Å« double Çü¿¡´Â %lf¸¦ ½áÁà¾ß ÇÑ´Ù´Â ¿ÀÇØ³ª, scanf()¿¡¼­´Â %lf°¡ double Çü¿¡ ´ëÀÀÇϱ⠶§¹®¿¡ printf() ¿ª½Ã µ¿ÀÏÇÒ °ÍÀ̶ó´Â Âø°¢¿¡ ±âÀÎÇÑ´Ù. Áß¿äÇÑ »ç½ÇÀº printf()ó·³ °¡º¯ ÀÎÀÚ¸¦ ¹Þ´Â ÇÔ¼öÀÇ °¡º¯ ÀÎÀڵ鿡´Â ±âº» ÀÎÀÚ Áø±Þ(default argument promotion)ÀÌ Àû¿ëµÇ±â ¶§¹®¿¡ float ÇüÀÌ Ç×»ó double ÇüÀ¸·Î º¯È¯µÇ¾î Àü´ÞµÈ´Ù. Áï printf() ÇÔ¼öÀÇ ÀÔÀå¿¡¼­´Â float ÇüÀ» ¹ÞÀ» ¼ö ¾ø°í Ç×»ó double Çü¸¸ ¿À±â¿¡ float Çü°ú double ÇüÀ» ±¸ºÐÇÒ Çʿ䰡 ¾ø´Â ¼ÀÀÌ´Ù. µû¶ó¼­ ´ÙÀ½ ¿¹¿¡¼­ º¸´Â °Íó·³ float Çü°ú double ÇüÀº µ¿ÀÏÇÏ°Ô %f¸¦ ÅëÇØ Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.

printf("%f, %f\n", 3.14159f, 3.14159);

ÇÁ·Î±×·¡¸ÓÀÇ ¿ÀÇØ°¡ ³í¸®ÀûÀ¸·Î Áö±ØÈ÷ ÀÚ¿¬½º·´°í, ¶Ç scanf()¿Í printf() »çÀÌÀÇ ´ëμºÀ» ¸ÂÃß±â À§ÇÑ ³ë·ÂÀ¸·Î C99¿¡¼­´Â %lf¸¦ »õ·Î µµÀÔÇÏ°í ±× Àǹ̸¦ %f¿Í µ¿ÀÏÇÑ °ÍÀ¸·Î Á¤ÀÇÇØÁÖ°í ÀÖ´Ù.

snprintf() ÇÔ¼ö±ºÀÇ µµÀÔ[Lib][Open]
sprintf()´Â fprintf()¿Í À¯»çÇÏÁö¸¸ ½ºÆ®¸²(stream)ÀÌ ¾Æ´Ñ ¹®ÀÚ¿­·Î ±× °á°ú¸¦ Ãâ·ÂÇÏ´Â ÇÔ¼öÀÌ´Ù. µû¶ó¼­ °á°ú¸¦ ÀúÀåÇϱâ À§ÇÑ ¹öÆÛ¸¦ Á¦°ø¹Þ°Ô µÇ°í ¹öÆÛÀÇ ±æÀ̸¦ ¾Ë ¼ö ¾ø±â¿¡ Ãâ·Â °á°ú°¡ ¹öÆÛÀÇ Å©±âº¸´Ù Ŭ °æ¿ì °ð¹Ù·Î ¹öÆÛ ¿À¹ö·±(buffer overrun)À» ÀÏÀ¸Å°°Ô µÈ´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î sprintf()´Â ¿À·¡ ÀüºÎÅÍ º¸¾È¿¡ Ãë¾àÇÑ ÇÔ¼ö·Î ÀÎ½ÄµÇ¾î ¿ÔÀ¸¸ç C90 Á¦Á¤ ´ç½Ã ´õ¿í ¾ÈÀüÇÏ°Ô ¹öÆÛÀÇ ±æÀ̸¦ Á¦°øÇϰí Ãâ·ÂÀÌ ±× ±æÀ̸¦ ³ÑÁö ¾Êµµ·Ï ÇØÁÖ´Â snprintf() ÇÔ¼ö¸¦ Ãß°¡ÇÏÀÚ´Â Á¦¾ÈÀÌ ÀÖ¾úÀ¸³ª 2/3ÀÇ µæÇ¥¸¦ ¾òÁö ¸øÇØ Á¦¿ÜµÈ ¹Ù ÀÖ´Ù. C99¿¡¼­´Â ±× Á¦¾ÈÀÌ ¹Þ¾Æµé¿©Á® snprintf()°¡ Ç¥ÁØ ÇÔ¼ö·Î Á¦°øµÈ´Ù(ÀÌÀü¿¡´Â ´Ù¼öÀÇ ÄÄÆÄÀÏ·¯°¡ È®ÀåÀ» ÅëÇØ À̸¦ Á¦°øÇؿԴÙ).

Áߺ¹ °¡´ÉÇÑ Çü ÇÑÁ¤¾î[Lang][Lib][Open]
¡®idempotent¡¯¶õ ¿©·¯¹ø »ç¿ëµÇ¾îµµ Çѹø »ç¿ëµÈ °Í°ú µ¿ÀÏÇÑ °á°ú¸¦ °®´Â Ư¼ºÀ» ¸»ÇÑ´Ù. C ¾ð¾î¿¡¼­ const³ª volatile °°Àº Çü ÇÑÁ¤¾î(type qualifier)´Â Á÷Á¢ÀûÀ̵ç typedef¸¦ ÅëÇØ¼­µç °°Àº °ÍÀ» Áߺ¹ »ç¿ëÇÒ ¼ö ¾ø¾ú´Ù.

const const int i;    /* wrong in C90 */
int * volatile volatile i;    /* wrong in C90 */

ÇÏÁö¸¸ C99¿¡¼­´Â À̸¦ Çã¶ôÇÑ´Ù. ±× ÀÌÀ¯ Áß Çϳª´Â ¹Ù·Î C ¾ð¾î¿¡¼­ ºñµ¿±â ½Ã±×³Î(asynchronous signal)¿¡¼­µµ Ç×»ó ¿øÀÚÀûÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖÀ½ÀÌ º¸ÀåµÇ´Â µ¥ÀÌÅÍÇüÀÎ sig_atomic_t(¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù)¿Í °ü·ÃµÇ¾î ÀÖ´Ù. sig_atomic_t´Â ȯ°æ¸¶´Ù ´Ù¸¥ Á¤¼öÇüÀ¸·Î Á¤ÀǵǴ typedef ¸íÀ¸·Î º¸Åë ½Ã±×³Î Çڵ鷯(asynchronous signal handler) ¾È¿¡¼­ ½Ã±×³ÎÀÌ ¹ß»ýÇßÀ½À» ¾Ë¸®´Â Ç÷¡±×(flag) ¿ªÇÒÀ» ÇÑ´Ù.

¹®Á¦´Â Ç¥ÁØÀÌ ½Ã±×³Î Çڵ鷯 ¾È¿¡¼­ ±×¿Í °°Àº ¿ëµµ·Î »ç¿ëÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍÇüÀ» sig_atomic_t°¡ ¾Æ´Ñ volatile sig_atomic_t·Î ±ÔÁ¤Çϰí ÀÖ´Ù´Â »ç½ÇÀÌ´Ù. ±×·³¿¡µµ ºÒ±¸ÇÏ°í ¸¹Àº ÇÁ·Î±×·¡¸ÓµéÀº ½À°üÀûÀ¸·Î sig_atomic_t¸¸À¸·Î ½Ã±×³Î Çڵ鷯¿ë Ç÷¡±×¸¦ ¼±¾ðÇØ¿Ô°í À̸¦ À§ÇØ ´Ù¼öÀÇ ÄÄÆÄÀÏ·¯´Â sig_atomic_t Çü¿¡ ÀÌ¹Ì volatileÀ» Æ÷ÇÔ½ÃÄÑ ¿Ô´Ù. ÀÌ °æ¿ì Ç¥ÁØÀ» ¿Ã¹Ù¸£°Ô Áö۰í volatile sig_atomic_t ÇüÀ» »ç¿ëÇÑ ÇÁ·Î±×·¥µéÀº sig_atomic_t¿¡ ³»ÀçµÇ¾î ÀÖ´Â volatile ¶§¹®¿¡ µ¿ÀÏÇÑ Çü ÇÑÁ¤¾î¸¦ Áߺ¹ »ç¿ëÇÏ°Ô µÈ´Ù.

µû¶ó¼­ C Ç¥ÁØÀº Çü ÇÑÁ¤¾î Áߺ¹À» Çã¿ëÇÔÀ¸·Î½á ±×¿Í °°Àº À߸øµÈ ÇÁ·Î±×·¥°ú ÄÄÆÄÀÏ·¯¸¦ Æ÷¿ëÇÑ °ÍÀÌ´Ù. ÇÑ °¡Áö ±â¾ïÇØ¾ß ÇÒ »ç½ÇÀº »ç¿ëÇÏ´Â ¶óÀ̺귯¸®ÀÇ ¿¡ sig_atomic_t°¡ voaltileÀ» Æ÷ÇÔÇÏµç ±×·¸Áö ¾Êµç Ç¥ÁØÀ» µû¸£´Â ÇÁ·Î±×·¥Àº ½Ã±×³Î Çڵ鷯¿ë Ç÷¡±×¸¦ ¼±¾ðÇÒ ¶§´Â ¿©ÀüÈ÷ volatile sig_atomic_t¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù.

va_copy() ¸ÅÅ©·Î[Lib][Open]
C90¿¡¼­´Â °¡º¯ ÀÎÀÚ¸¦ Á¦¾îÇϱâ À§ÇØ »ç¿ëµÇ´Â va_list Çü(¿¡ ¼±¾ðµÇ¾î ÀÖÀ½)ÀÇ º¯¼ö¸¦ ¾ÈÀüÇÏ°Ô º¹»çÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÏÁö ¾Ê¾Ò´Ù. Áï va_start()-va_end() ½ÖÀ» µÎ ¹ø »ç¿ëÇÏÁö ¾Ê°í µ¿½Ã¿¡ °¡º¯ ÀÎÀÚ¸¦ µÎ ¹ø ÈÈÀ» ¼ö ÀÖ´Â À̽ļº ÀÖ´Â ¹æ¹ýÀÌ Á¸ÀçÇÏÁö ¾Ê¾Ò´Ù.

int foo(int n, ...)
{
    int i, sum;
    va_list ap, aq;

    va_start(ap, n);
    while ((i = va_arg(ap, int)) >= 0)
        sum += i;
    aq = ap;    /* º¹»ç ½Ãµµ: ¾È µÉ ¼öµµ ÀÖÀ½ */
    for (i = 0; i < n; i++)
        sum += va_arg(ap, int);
    for (i = 0; i < n; i++)
        sum -= bar(va_arg(ap, int));
    va_end(ap);

    return sum;
}

ÀÌ ¿¹¿¡¼­´Â aq¿¡ ap¸¦ ´ëÀÔÇÔÀ¸·Î½á °¡º¯ ÀÎÀÚ ¸®½ºÆ®¸¦ µ¿½Ã¿¡ µÎ¹ø ½ºÄµÇÒ ¼ö ÀÖ´Â Á¤º¸°¡ ¿ÏÀüÈ÷ º¹»çµÆ´Ù°í °¡Á¤Çϰí ÀÖ´Ù. ¸¸¾à ÄÄÆÄÀÏ·¯°¡ ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î °¡º¯ ÀÎÀÚ ¸®½ºÆ®¸¦ °ü¸®ÇÑ´Ù¸é ÀÌ ÇÁ·Î±×·¥Àº ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù(Ç¥ÁØÀº °¡º¯ ÀÎÀÚ¸¦ °ü¸®ÇÏ´Â ±¸Ã¼ÀûÀÎ ¹æ¹ýÀ» °¢ ÄÄÆÄÀÏ·¯¿¡°Ô ¸Ã±â°í ÀÖ´Ù).

¡ß va_list : °¡º¯ ÀÎÀÚ Á¤º¸¸¦ ÀúÀåÇÒ ¼ö Àִ ƯÁ¤ ÀÚ·á ±¸Á¶¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÇü
¡ß va_start() : ±× ÀÚ·á ±¸Á¶ÀÇ ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ ap°¡ ±× ¸Þ¸ð¸®¸¦ °¡¸®Å°µµ·Ï ÇÑ´Ù.
¡ß va_end() : ap°¡ °¡¸®Å°´Â ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù.
¡ß va_arg() : °¡º¯ ÀÎÀÚ¸¦ Çϳª °¡Á®¿À¸ç ap°¡ °¡¸®Å°´Â ÀÚ·á ±¸Á¶ÀÇ Æ¯Á¤ °ªÀ» º¯È­½ÃŲ´Ù.

ÀÌ °æ¿ì aq´Â ap¿Í °°Àº ÀÚ·á ±¸Á¶¸¦ °¡¸®Å°°Ô µÇ°í, ÀÌ¹Ì ap¿Í ÇÔ²² va_arg()°¡ ¼öÇàµÇ±â¿¡ ap°¡ °¡¸®Å°´Â ÀÚ·á ±¸Á¶ÀÇ °ªÀÌ º¯È­ÇÒ ¶§ aq°¡ °¡¸®Å°´Â ÀÚ·á ±¸Á¶ÀÇ °ª ¿ª½Ã º¯ÇÏ°Ô µÈ´Ù. C99¿¡¼­´Â °¡º¯ ÀÎÀÚ ¸®½ºÆ®¿¡ ´ëÇÑ Á¤º¸¸¦ Ç×»ó Àû¹ýÇÏ°Ô º¹»çÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇϱâ À§ÇØ va_copy() ¸ÅÅ©·Î¸¦ Ãß°¡·Î Á¦°øÇÏ°Ô µÆ´Ù. µû¶ó¼­ ¾Õ¿¡¼­ aq = ap;¶ó´Â ¼ö½ÄÀ» va_copy(aq, ap);·Î ´ëüÇÏ°í ¸¶Áö¸·¿¡ va_end(aq);¸¦ Ãß°¡Çϸé ÇØ´ç ¿¹Á¦´Â ¿Ã¹Ù¸¥ C99 ÇÁ·Î±×·¥ÀÌ µÈ´Ù.

´õ ¾ö°ÝÇØÁø ±¸Á¶Ã¼Çü ȣȯ ±ÔÄ¢[Lang][Open]
µÎ °³ÀÇ ºÐ¸®µÈ ¼Ò½º ÆÄÀÏ¿¡¼­ ȣȯµÇ´Â ±¸Á¶Ã¼ÇüÀ» ±â¼úÇϰíÀÚ ÇÒ ¶§ º¸ÅëÀº ±¸Á¶Ã¼ ű×(tag)¸¦ µ¿ÀÏÇÏ°Ô ¸ÂÃçÁÖ°Ô µÈ´Ù. ÀÌ´Â ¸¹Àº C ¾ð¾î Ã¥ÀÌ ¿À·§µ¿¾È °­Á¶Çؿ »ç½ÇÀ̱⿡ ´Ù¼öÀÇ ÇÁ·Î±×·¡¸Ó°¡ ÀÎÁöÇϰí ÀÖÁö¸¸ »ç½Ç À̰ÍÀÌ C99 ÀÌÀü±îÁö´Â C Ç¥ÁØÀÌ °­¿äÇÏ´Â ±ÔÄ¢ÀÌ ¾Æ´Ï¶ó´Â »ç½ÇÀ» ¾Ë°Ô µÈ´Ù¸é Á¶±Ý ÇãÅ»ÇÒÁöµµ ¸ð¸£°Ú´Ù. Áï ´ÙÀ½ÀÇ µÎ ¼Ò½º ÆÄÀÏ¿¡ ÀÖ´Â struct foo¿Í struct bar´Â (C90/C95¿¡¼­´Â) ȣȯµÇ´Â µ¥ÀÌÅÍÇüÀÌ°í µÎ ¼Ò½º ÆÄÀÏ¿¡¼­ º¯¼ö¸í obj´Â µ¿ÀÏÇÑ ´ë»óü(object)¸¦ ÀǹÌÇÑ´Ù.

ÇÏÁö¸¸ ¾ö¿¬È÷ ȣȯµÇ´Â µÎ ±¸Á¶Ã¼ÇüÀº ºñ·Ï ºÐ¸®µÈ ¼Ò½º ÆÄÀÏ¿¡¼­ ¼±¾ðµÉ ¶§µµ °°Àº ű׸¦ °®´Â °ÍÀÌ ¹Ù¶÷Á÷Çϱ⿡ C99¿¡¼­´Â űױîÁö µ¿ÀÏÇØ¾ß ÇÑ´Ù´Â ±ÔÄ¢À» Ãß°¡ÇÏ°Ô µÆ´Ù.

C90/C95¿Í C99 Â÷ÀÌ
Áß°£ Áß°£ ´Ù¼Ò ³­À̵µ ÀÖ´Â À̾߱⵵ ÀÖ¾úÁö¸¸ °¡´ÉÇÑÇÑ °£·«Çϰí È¿À²ÀûÀ¸·Î C90/C95¿Í C99ÀÇ Â÷À̸¦ Àü´ÞÇÒ ¼ö ÀÖµµ·Ï ³ë·ÂÇß´Ù. ´ÙÀ½ È£¿¡¼­µµ À¯»çÇÑ È帧À¸·Î ³ª¸ÓÁö ±â¼ú Áß ÁÖ¿äÇÑ °ÍµéÀ» »ìÆìº¸°í ³Ê¹« ¹æ´ëÇÑ ¼³¸íÀÌ ÇÊ¿äÇϰųª Áö³ªÄ¡°Ô »ç¼ÒÇÑ °ÍµéÀº Çϳª·Î ¹­¾î ¼Ò°³Çϵµ·Ï ÇϰڴÙ. À̹ø ¿ø°í¿¡ ´ëÇÑ ¾î¶°ÇÑ ÁöÀûÀ̳ª Áú¹®, Àǰߵµ ȯ¿µÀÌ´Ù. ÇÊÀÚÀÇ ¸ÞÀÏÀ̳ª ȨÆäÀÌÁö °Ô½ÃÆÇÀ» ÅëÇØ ¾Ë·ÁÁÖ¸é ÀÚ¼¼ÇÑ ´äº¯À» µå¸± °ÍÀ» ¾à¼ÓÇÑ´Ù. @

C99 ÄÄÆÄÀÏ·¯  
¿©±â¼­ ¼Ò°³ÇÏ´Â C99 ±â¼úµéÀ» °ú¿¬ ¾î¶² ȯ°æ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö ±Ã±ÝÇÑ µ¶ÀÚµéÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÇöÀç »ó¿ë ÄÄÆÄÀÏ·¯ ´Ù¼ö´Â C99 ±â¼úÀ» ¿Ïº®ÇÏ°Ô Áö¿øÇϰí ÀÖÀ¸³ª ¿ÀǼҽº ȯ°æ µî¿¡¼­ »ç¿ëµÇ´Â °ø°³ ÄÄÆÄÀÏ·¯´Â Á¡Á¡ ´õ ³ª¾ÆÁö°í ÀÖ±â´Â ÇÏÁö¸¸ C99¸¦ ºÎºÐÀûÀ¸·Î¸¸ Áö¿øÇϰí ÀÖ´Â »óÅÂÀÌ´Ù. ±¸Ã¼ÀûÀÎ ÄÄÆÄÀÏ·¯¸¦ ¸î °¡Áö ¾ð±ÞÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

¡ß Comeau C/C++ compiler + Dinkumware library(http://www.comeaucomputing.com, http://www.dinkumware.com)
Comeau»ç¿¡¼­´Â ´Ù¾çÇÑ È¯°æ¿¡¼­ C99¸¦ ¿Ïº®ÇÏ°Ô Áö¿øÇÏ´Â ÄÄÆÄÀÏ·¯¸¦, Dinkumware»ç¿¡¼­´Â À¯»çÇÏ°Ô C99¸¦ ¿Ïº®ÇÏ°Ô Áö¿øÇϴ ǥÁØ ¶óÀ̺귯¸®¸¦ »ó´ëÀûÀ¸·Î Àú·ÅÇÑ °¡°Ý¿¡ Á¦°øÇϰí ÀÖ´Ù. ÀÌ µÑÀ» ÇÕÇØ »ç¿ëÇÏ¸é ¿ÂÀüÇÑ C99 ȯ°æÀ» ¾ò°Ô µÈ´Ù.
¡ß Intel C compiler(http://www.intel.com/software/products/compilers)
ÀÎÅÚ¿¡¼­ ¸®´ª½º¿Í MS À©µµ¿ì ȯ°æÀ» À§ÇØ ÆÇ¸ÅÇϰí ÀÖ´Â icc ¿ª½Ã C99¸¦ Áö¿øÇϰí ÀÖ´Ù.
¡ß MIPSpro ANSI C Compiler(http://www.sgi.com/software/irix/tools/c.html)
SGI¿¡¼­ ¹èÆ÷ÇÏ´Â IRIX¿ë ÄÄÆÄÀÏ·¯µµ C99¸¦ Áö¿øÇϰí ÀÖ´Ù.
¡ß GNU gcc(http://gcc.gnu.org)
C/C++ À̿ܿ¡µµ ´Ù¾çÇÑ ¾ð¾î¸¦ Áö¿øÇÏ´Â gcc ¿ª½Ã C99¸¦ ºÎºÐÀûÀ¸·Î Áö¿øÇϰí ÀÖ´Ù. gcc°¡ Áö¿øÇϰí ÀÖ´Â C99 ±â¼ú¿¡ ´ëÇÑ ³»¿ëÀº http://gcc.gnu.org/c99status.html¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖ´Ù(´Ù¸¥ ÄÄÆÄÀÏ·¯µµ ¸¶Âù°¡ÁöÁö¸¸). gcc¿¡¼­ C99¸¦ ºÎºÐÀûÀ¸·Î¶óµµ Áö¿øÇϵµ·Ï ½ÇÇàÇϱâ À§Çؼ­´Â -std=c99 °°Àº º°µµÀÇ ¿É¼ÇÀÌ ÇÊ¿äÇÏ´Ù.
¡ß lcc-win32(http://www.cs.virginia.edu/~lcc-win32)
Christopher Fraser¿Í David HansonÀÇ lcc¿¡ ±â¹ÝÀ» µÐ MS À©µµ¿ì¿ë ¹«·á C ÄÄÆÄÀÏ·¯ÀÎ lcc-win32 ¿ª½Ã ´Ù¼Ò ´õµðÁö¸¸ C99¸¦ ²ÙÁØÈ÷ Áö¿øÇذ¡°í ÀÖ´Ù.
µ¶ÀÚÀÇ°ß ³²±â±â (·Î±×ÀÎ ÈÄ µ¶ÀÚ ÀǰßÀ» ³²±â½Ç ¼ö ÀÖ½À´Ï´Ù.)
¾ÆÀ̵ð ºñ¹Ð¹øÈ£
 
 
[Ã¥¼Ò°³]ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¨: »ý°¢À»...
[DDD ¨ç] µµ¸ÞÀÎ ÁÖµµ °³¹ß
°¡»óÈ­¿¡ ½ÇÆÐÇÏ´Â 10°¡Áö ÀÌÀ¯
À©µµ¿ìCE µð¹ö±ë¿¡ °üÇÑ 12°¡Áö...
[±â°í]±×¸° ½ºÅ丮Áö·Î °¡´Â±æ
[Ã¥¼Ò°³] À¥ °³¹ßÀÚ¸¦ À§ÇÑ ½ºÇÁ...
À©µµ¿ìCE °³¹ßÅø¿¡ °üÇÑ 12°¡Áö...
[¿ÀÇÂÀÎÅͺä]Àè Äá HTCºÎ»çÀå "½º¸¶Æ®Æù ½ÃÀå °³Ã´, Áö±ÝÀÌ Àû±â" [00:17:38]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
[»ï¼º ¿½ ½ºÅ丮-¨è]'P2 DMB' °ÑÆ÷Àå, Æò¹üÄ¡ ¾ÊÀº ÀÌÀ¯ ÀÖ¾ú³× [00:10:13]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
Á¶Áßµ¿, ´ÙÀ½¿¡ ´º½º°ø±Þ Áß´Ü¡¦"...
º¸¾È°­È­ ±¸±Û ¡°À©µµ ¹ö¸®°í À¥À¸...
¡®À©µµXP¡¯½Ã´ë Æó¸·, »ç¿ëÀÚ¿¡°Ô...
¡®³ªÈ¦·Î ¾×ƼºêX¡¯¡¦¼¼°è ÀÎÅͳݰú...
ÀÎÅÍ³Ý ¹ðÅ· ºê¶ó¿ìÀú´Â µû·Î ÀÖ´Ù...
SKT µ¶Á¡ 800MHz Á֯ļö,...
[ºÎÀ½]±èÈ«¿µ ÆÒÅð迭 CSº»ºÎÀå...
¹æÅëÀ§, ¹æ¼ÛÄÜÅÙÃ÷ ÁøÈï»ç¾÷¿¡ 2...
LG¿£½Ã½º, IT ÀÎÀç ¾ç¼º »êÇÐ...
NHN, ÀÎõ°øÇ׿¡ ¹«·á ÀÎÅÍ³Ý ...
[Àλç]ÇϳªÀºÇà
 
 
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.