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

Àü¿õ (Çѱ¹Á¤º¸Åë½Å´ëÇÐ)   2004/11/19
¿¬Àç¼ø¼­
1ȸ. ÃֽŠC Ç¥ÁØ¡¸C99¡¹
2ȸ. C99ÀÇ ½Å±â¼úµé
3ȸ. C99 ÀÌÈÄÀÇ C ¾ð¾î. <³¡>
ÀÌÀü ±Û¿¡¼­ ¼Ò°³Çß´ø ±âÁØ¿¡ ¸ÂÃç C99¿¡ »õ·Î µµÀÔµÈ ±â¼úÀ» À̾ ¾Ë¾Æº¸ÀÚ. ¿©±â¼­ ¼Ò°³ÇÏ´Â °Í ¿Ü¿¡µµ ´õ ¸¹Àº ³»¿ëÀÌ ÀÖÁö¸¸, Áß¿äÇÑ Ç׸ñ¸¸ ÀÚ¼¼È÷ ¾ð±ÞÇϵµ·Ï ÇϰڴÙ.

<wchar.h>¿Í <wctype.h>¸¦ ÅëÇÑ È®Àå ¹®ÀÚÀÇ Áö¿ø[Lib][Open]
<wchar.h>¿Í <wctype.h>´Â »ç½Ç C90ÀÇ È®ÀåÀÎ AMD1¿¡¼­ Ãß°¡µÈ Ç¥ÁØ ¶óÀ̺귯¸®·Î C90 ¹ßÇ¥ ÀÌÀüºÎÅÍ ºñ¿µ¾î±Ç¿¡¼­ Á¦±âµÆ´ø ´ëÇü ¹®Àڼ Áö¿øÀ» À§ÇØ Ãß°¡µÆ´Ù. È®Àå ¹®ÀÚ(wide character)¿Í Ç×»ó µû¶ó´Ù´Ï´Â ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¶ó´Â °³³äÀº ¹ÙÀÌÆ®/¹®ÀÚ Ãæµ¹(byte and character conflict)À» ÇØ°áÇϱâ À§ÇØ µµÀÔµÈ °³³äÀÌ´Ù.

ÄÄÇ»ÅÍ¿¡¼­ ¿µ¹® ¾ËÆÄºª°ú ÀϺΠƯ¼ö ¹®ÀÚ¸¸À» »ç¿ëÇÏ´Â °æ¿ì, Ç¥ÁØÀÌ ÃÖ¼Ò 8ºñÆ® ÀÌ»óÀ¸·Î ±ÔÁ¤ÇÏ´Â ¹ÙÀÌÆ®¸¦ ÅëÇØ ¾Æ¹« ¹®Á¦¾øÀÌ ¸ðµç ¹®ÀÚ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ºñ¿µ¾î±ÇÀÇ °æ¿ì¿¡´Â ÈξÀ ¸¹Àº ¼öÀÇ ±ÛÀÚ(ÇÑÀÚ¸¦ »ý°¢ÇØ º¸ÀÚ)¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÇÊ¿äÇϰí, °á±¹ ±×·± ȯ°æ¿¡¼­ ¹®ÀÚ¸¦ Ç¥ÇöÇϱâ À§Çؼ­´Â ¹ÙÀÌÆ®º¸´Ù ´õ Å« ÀúÀå ´ÜÀ§¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. Áï ÇϳªÀÇ ¹ÙÀÌÆ®°¡ °ð ÇϳªÀÇ ¹®ÀÚ¶ó´Â ÀüÅëÀûÀÎ °ø½ÄÀÌ ±úÁ³°í, À̸¦ ¹ÙÀÌÆ®/¹®ÀÚ Ãæµ¹À̶ó°í ºÎ¸¥´Ù.

¾ð±ÞÇßµíÀÌ C ¾ð¾î°¡ ÇʼöÀûÀ¸·Î ÇÊ¿ä·Î ÇÏ´Â ±âº» ¹®ÀÚ À̿ܿ¡ ¸¹Àº ¼öÀÇ ¹®ÀÚ¸¦ Ç¥ÇöÇÏ´Â °¡Àå Á÷°üÀûÀÎ ¹æ¹ýÀº ¹ÙÀÌÆ®º¸´Ù Å« ÀúÀå ´ÜÀ§¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ ¹®Á¦´Â ÇÁ·Î±×·¥ ³»ºÎ¿¡¼­´Â ÀÌ ¹æ¹ýÀÌ °¡´ÉÇÏÁö¸¸ ÇÁ·Î±×·¥ ¿ÜºÎ(¿¹¸¦ µé¸é, ÀúÀå ¸Åü)¿¡¼­´Â ¿©ÀüÈ÷ ¹ÙÀÌÆ® Áß½ÉÀ̶ó´Â °ÍÀÌ´Ù. À̸¦ À§ÇØ ¹ÙÀÌÆ®º¸´Ù Å« ÀúÀå ´ÜÀ§¿¡ ÀúÀåµÇ¾î ÀÖ´Â È®Àå ¹®ÀÚ¸¦ ¹ÙÀÌÆ® ±â¹ÝÀÇ Ç¥ÇöÀ¸·Î º¯È¯(ÀÎÄÚµù)ÇØ³õÀº ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚÀÇ °³³äÀÌ »ý±ä´Ù. Áï, ¸¹Àº ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ´Â ¹®ÀÚ¼ÂÀ» ´Ù·ç±â À§ÇØ ÇÁ·Î±×·¥ ³»ºÎ¿¡¼­´Â È®Àå ¹®ÀÚ¸¦, ¿ÜºÎ¿¡¼­´Â ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¸¦ »ç¿ëÇϸç, ÇÁ·Î±×·¥Àº ¿ÜºÎ·ÎºÎÅÍ ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¸¦ ÀÔ·Â¹Þ¾Æ À̸¦ È®Àå ¹®ÀÚ·Î º¯È¯ÇØ ¿øÇÏ´Â ÀÛ¾÷À» ¼öÇàÇÑ ÈÄ¿¡ ´Ù½Ã Ãâ·ÂÇÒ ¶§ ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ·Î º¯È¯ÇØ Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.

<±×¸² 1> ¹ÙÀÌÆ®/¹®ÀÚ Ãæµ¹

´Ù¸¸ AMD1 ÀÌÀü¿¡´Â Ç¥ÁØÀÌ È®Àå ¹®ÀÚ(¿­)¿Í ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ(¿­) »çÀÌÀÇ º¯È¯ ±â´É¸¸À» <stdio.h>¸¦ ÅëÇØ Á¦°øÇ߱⠶§¹®¿¡, È®Àå ¹®ÀÚ(¿­)·Î º¯È¯ÇÑ ÀÌÈÄÀÇ ÀÛ¾÷Àº ¸ðµÎ ÇÁ·Î±×·¥ÀÇ ÀÏÀ̾ú´Ù. AMD1¿¡¼­´Â <wchar.h>¿Í <wctype.h>¸¦ ÅëÇØ ÇÁ·Î±×·¥ ³»¿¡¼­ È®Àå ¹®ÀÚ(¿­)¸¦ ±âÁ¸ÀÇ ´ÜÀÏ ¹ÙÀÌÆ® ¹®ÀÚ(¿­)ó·³ ¼Õ½±°Ô ´Ù·ê ¼ö ÀÖ´Â ÆíÀǸ¦ Á¦°øÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½¿¡¼­ ¿ÞÂÊ ÇÁ·Î±×·¥Àº ´ÜÀÏ ¹ÙÀÌÆ® ¹®ÀÚ¸¦ ÀÔ·Â¹Þ¾Æ ±× ¼ö¸¦ ¼¼´Â ÀüÅëÀûÀÎ ÇÁ·Î±×·¥À̰í, ¿À¸¥ÂÊÀº µ¿ÀÏÇÑ ÀÛ¾÷À» ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ°¡ º¯È¯µÈ °á°úÀÎ È®Àå ¹®ÀÚ¿¡ ´ëÇØ¼­ ¼öÇàÇÏ´Â °ÍÀÌ´Ù.

#include <stdio.h>

int main(void)
{
    int n = 0;

    while (getchar() != EOF)
        n++;
    printf("%d\n", n);
    return 0;
}
-------------------------------
#include <stdio.h>
#include <wchar.h>

int main(void)
{
    int n = 0;

    while (getwchar() != WEOF)
        n++;
    wprintf(L"%d\n", n);
    return 0;
}

ÀÌ ¿¹¿¡¼­ º¼ ¼ö ÀÖµíÀÌ ÀüÅëÀûÀÎ ´ÜÀÏ ¹ÙÀÌÆ® ÇÔ¼ö¿¡ ´ëÀÀÇÏ´Â È®Àå ¹®ÀÚ ÇÔ¼ö¸¦ µµÀÔÇÒ ¶§ À§¿øÈ¸´Â º´·Ä¼º(parallelism)°ú °³¼±¼º(improvement)À» °í·ÁÇß´Ù. Áï, °¡±ÞÀû ±âÁ¸ÀÇ ÇüÅÂ¿Í À¯»çÇÏ°Ô ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖµÇ, ºÐ¸íÇÑ ¹®Á¦¸¦ ¾È°í ÀÖ´Â ÇÔ¼öµé¿¡ ´ëÇØ¼­´Â óÀ½ È®Àå ¹®ÀÚ¿Í °ü·ÃµÈ ÇÔ¼ö¸¦ Ãß°¡ÇÏ´Â °ÍÀ̱⿡ ½ÃÀÛºÎÅÍ °ú°¨È÷ º¯È­¸¦ Áشٴ ¿øÄ¢À̾ú´Ù. ´ÙÀ½Àº ÀÌ µÎ °¡Áö ±âÁØÀÌ Àû¿ëµÈ ¿¹¸¦ º¸¿©ÁØ´Ù(¸ðµç ¿¹¸¦ ³ª¿­ÇÑ °ÍÀº ¾Æ´Ï´Ù).
            
¡ß º´·Ä¼ºÀÌ Àû¿ëµÈ °æ¿ì
    char/wchar_t: ´ÜÀÏ ¹®ÀÚ¸¦ Ç¥ÇöÇϱâ À§ÇÑ µ¥ÀÌÅÍÇü
    int/wint_t: EOF/WEOF¸¦ Ãß°¡·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍÇü
    isdigit()/isxdigit(): ¹®ÀÚ ºÐ·ù¸¦ À§ÇÑ ÇÔ¼ö
    fgetc()/fgetwc(): ½ºÆ®¸²¿¡¼­ ¹®ÀÚ¸¦ Àоî¿À±â À§ÇÑ ÇÔ¼ö
    fprintf()/fwprintf(): ½ºÆ®¸²À¸·Î Çü½ÄÀ» °®Ãç Ãâ·ÂÇÏ´Â ÇÔ¼ö

¡ß °³¼±¼ºÀÌ Àû¿ëµÈ °æ¿ì
    swprintf(): sprintf()¿Í´Â ´Þ¸® ¹öÆÛ ¿À¹ö·±(buffer overrun)À» ¹æÁö
    wcstok(): strtok()¿Í´Â ´Þ¸® ³»ºÎ ¹öÆÛ¸¦ »ç¿ëÇÏÁö ¾ÊÀ½

¡ß È®Àå ¹®ÀÚ ¹öÀüÀÌ ¾ø´Â °æ¿ì(À§ÇèÇϰųª ºÒÇÊ¿äÇÑ °æ¿ì)
    gets()/puts()/atof()/perror()

¡ß ´ÜÀÏ ¹ÙÀÌÆ® ¹öÀüÀÌ ¾ø´Â °æ¿ì(ÁÖ·Î ¹®ÀÚ º¯È¯ ÇÔ¼ö)
    btowc()/mbrtowc()

¶Ç Çϳª, C90°ú´Â ´Þ¸® AMD1¿¡ Ãß°¡µÈ Èï¹Ì·Î¿î °³³äÀº ÀϹÝÈ­µÈ ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¶ó´Â °ÍÀÌ´Ù. C90Àº ³Î ¹®ÀÚ(null character)°¡ ´ÜÀÏ ¹ÙÀÌÆ® ¹®ÀÚ¿­°ú ¸ÖƼ ¹ÙÀÌÆ® ¹®ÀÚ¿­ ¸ðµÎ¿¡¼­ ¹®ÀÚ¿­ÀÇ ³¡À» Ç¥½ÃÇÏ´Â ¿ªÇÒÀ» Çϵµ·Ï Çϱâ À§ÇØ, ¶Ç Ãʱ⠺¯È¯ »óÅ¿¡¼­´Â ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¿­ ³»¿¡¼­ C ¾ð¾îÀÇ ±âº» ¹®ÀÚ°¡ ¸ðµÎ º»·¡ÀÇ Àǹ̸¦ °®µµ·Ï Çϱâ À§ÇØ ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¿¡ ¾ö°ÝÇÑ Á¦ÇÑÀ» °¡Çß´Ù.

ÇÏÁö¸¸ ÀÌ·± Á¦ÇÑÀº ISO/IEC 10646À» ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ·Î »ç¿ëÇÏÁö ¸øÇϵµ·Ï ¸¸µç´Ù. ¿¹¸¦ µé¾î a´Â ISO/IEC 10646¿¡¼­ \0\0\0a¿Í °°Àº Ç¥ÇöÀ» °®´Â´Ù. µû¶ó¼­ ÆÄÀÏ¿¡ ÇÑÇØ¼­¸¸ ±×·¯ÇÑ Á¦ÇÑÀ» ¿ÏÈ­ÇÏ°í ¸ÖÆ¼¹ÙÀÌÆ® ¹®ÀÚ·Î ±¸¼ºµÈ ÆÄÀÏÀÇ ³»¿ëÀ» Àоî È®Àå ¹®ÀÚ·Î º¯È¯ÇØ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÀϹÝÈ­µÈ ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¶ó´Â °³³äÀ» Ãß°¡Çß´Ù. ÁÖÀÇÇÒ Á¡Àº ÀϹÝÈ­µÈ ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ´Â ÇÁ·Î±×·¥ ¿ÜºÎ¿¡¼­¸¸ Çã¿ëµÈ´Ù´Â »ç½ÇÀÌ´Ù. ÇÁ·Î±×·¥ ³»ºÎ¿¡¼­ ´Ù·ç¾îÁö´Â ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ¿¡´Â ¿©ÀüÈ÷ ¾ö°ÝÇÑ Á¦ÇÑÀÌ ±×´ë·Î Àû¿ëµÈ´Ù.

°¡º¯ ±æÀÌ ¹è¿­[Lang][Open]
C¿¡¼­ ¸ðµç ¹è¿­Àº Á¤ÀûÀÎ Å©±â¸¦ °®´Â´Ù. Áï ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ±â ÀÌÀü¿¡ ¸ðµç ¹è¿­ÀÇ Å©±â¸¦ ¹Ì¸® °áÁ¤ÇÒ ¼ö ÀÖµµ·Ï Á¤¼ö »ó¼ö¸¸ÀÌ ¹è¿­ Å©±â¸¦ ¸í½ÃÇϱâ À§ÇØ ¾²ÀÏ ¼ö ÀÖ´Ù. °á±¹ µ¿ÀûÀÎ Å©±âÀÇ ¹è¿­À» À§Çؼ­´Â malloc()/free()¸¦ »ç¿ëÇØ¾ß Çß°í, ÀÌ·± ºÒÆíÀ» ÁÙÀ̱â À§ÇØ ´Ù¼öÀÇ ÄÄÆÄÀÏ·¯´Â È®ÀåÀ» ÅëÇØ º¸ÅëÀÇ ¹è¿­ ¼±¾ð¿¡¼­µµ Å©±â¸¦ µ¿ÀûÀ¸·Î ¸í½ÃÇÒ ¼ö ÀÖµµ·Ï Çã¶ôÇß¾ú´Ù. ÇÏÁö¸¸ ÀÌÁ¦ C99¸¦ ÅëÇØ Ç¥ÁØ C¿¡¼­µµ °ø½ÄÀûÀ¸·Î °¡º¯ ±æÀ̸¦ °®´Â ¹è¿­(VLA, variable length array) ¼±¾ðÀÌ Çã¶ôµÈ´Ù.

void foo(int size, int vla[*]);

int bar(void)
{
    const int n = 10;    // C¿¡¼­´Â »ó¼ö°¡ ¾Æ´Ô
    int m = 9;
    int a[n], twodim[m][n];
    size_t s = sizeof(a);    // ½ÇÇà Áß¿¡ Æò°¡µÊ
    /* ... */
}

void foo(int size, int vla[size])
{    /* .... */    }

ÀÌ ¿¹´Â VLA¸¦ ¼±¾ðÇÏ°í »ç¿ëÇÏ´Â ´Ù¾çÇÑ ¸ð½ÀÀ» º¸¿©ÁÖ°í ÀÖ´Ù. ƯÈ÷ µ¿ÀûÀÎ Å©±âÀÇ 2Â÷¿ø ¹è¿­ÀÌ malloc()/free()¸¦ ÅëÇÑ µ¿Àû ¸Þ¸ð¸® ÇÒ´ç¿¡ ºñÇØ ¾ó¸¶³ª ½±°Ô ¼±¾ðµÉ ¼ö ÀÖ´ÂÁö ÁÖ¸ñÇÒ Çʿ䰡 ÀÖ´Ù. ¶ÇÇÑ ÁÖ¼®¿¡¼­µµ ¹àÈ÷°í ÀÖÁö¸¸ ¿ø·¡ ¹ø¿ª½Ã¿¡ Æò°¡µÇ´Â sizeof ¿¬»êÀÚ°¡ VLA¿¡ Àû¿ëµÇ´Â °æ¿ì¿¡´Â ½ÇÇà Áß¿¡ Æò°¡µÈ´Ù´Â »ç½Çµµ Èï¹Ì·Ó´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.

i = 0;
int a1[i++];            // Æò°¡µÊ (i Áõ°¡)
int s1 = sizeof(i++);            // Æò°¡µÇÁö ¾ÊÀ½
int s2 = sizeof(int [++i]);        // Æò°¡µÊ (i Áõ°¡)
int s3 = sizeof(int (*)[++i]);        // ¾Ë ¼ö ¾øÀ½

¿©±â¼­ ¸¶Áö¸· ¿¹´Â ÄÄÆÄÀÏ·¯¿¡ µû¶ó ±× °á°ú°¡ ´Þ¶óÁüÀ» ÀǹÌÇÑ´Ù. VLAÀÇ Å©±â¿¡ µû¶ó Æ÷ÀÎÅÍÀÇ Å©±â°¡ ´Þ¶óÁö´Â ȯ°æ¿¡¼­´Â ½ÇÇà Áß¿¡ Æò°¡µÇ¸ç, Ç×»ó Æ÷ÀÎÅÍ Å©±â°¡ °íÁ¤µÇ¾î Àִ ȯ°æ¿¡¼­´Â ¹ø¿ª½Ã¿¡ Æò°¡µÉ ¼öµµ ÀÖ´Ù. ¸¶Áö¸·À¸·Î ±â¾ïÇÒ °ÍÀº gcc µîÀÇ ÄÄÆÄÀÏ·¯°¡ C99 ÀÌÀüºÎÅÍ È®ÀåÀ¸·Î Á¦°øÇÏ´ø °¡º¯ ±æÀÌ ¹è¿­Àº »ó¼¼ÇÏ°Ô µé¿©´Ùº¸¸é C99¿¡¼­ Á¦°øÇÏ´Â °Í°ú Â÷À̰¡ ÀÖ´Ù´Â »ç½ÇÀÌ´Ù. Áö¸éÀÇ Á¦ÇÑÀ¸·Î ´Ù·çÁö´Â ¸øÇÏÁö¸¸ ±× »ç½Ç¸¸Àº ²À ±â¾ïÇØµÎ±æ ¹Ù¶õ´Ù.

¸Å°³º¯¼ö ¹è¿­ ¼±¾ðÀÌ static°ú Çü ÁöÁ¤ÀÚ[Lang][Open]
±âº»ÀûÀ¸·Î ¾Æ·¡ µÎ ¼±¾ðÀº (ÇÁ·Î±×·¥À» º¸´Â »ç¶÷¿¡°Ô´Â ÁÖ¼®Ã³·³ ¾î¶² Á¤º¸¸¦ ÁÙ ¼ö À־) ÄÄÆÄÀÏ·¯ÀÇ ÀÔÀå¿¡¼­´Â µ¿ÀÏÇÑ ¼±¾ðÀÌ´Ù.

void func(int a[10]);
void func(int *a);

C99¿¡¼­´Â ¸Å°³º¯¼ö¿¡¼­ÀÇ ÀÌ ¹«ÀǹÌÇÑ ¹è¿­ ¼±¾ðÀ» º¯ÇüÇÏ¿© ÄÄÆÄÀÏ·¯°¡ ÃÖÀûÈ­¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â Á¤º¸¸¦ Á¦°øÇϵµ·Ï Çß´Ù.

void func(int a[static 10], int b[static 10]);

ÀÌ ¼±¾ðÀº ÇÔ¼ö ¾È¿¡¼­ µÎ Æ÷ÀÎÅÍ a, b°¡ ³Î Æ÷ÀÎÅÍ(null pointer)°¡ ¾Æ´Ï¸ç ÀÚ½ÅÀÌ °¡¸®Å°´Â ¹è¿­¿¡¼­ ÃÖ¼Ò 10°³ÀÇ ¿ä¼Ò¿¡´Â Á¢±ÙÇÔÀ» ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë¸°´Ù. ÄÄÆÄÀÏ·¯´Â ÀÌ·± Á¤º¸¸¦ ¹ÙÅÁÀ¸·Î ·çÇÁ ¾ð·Ñ¸µ(loop unrolling) °°Àº ÃÖÀûÈ­¸¦ ½±°Ô Àû¿ëÇÒ ¼ö ÀÖ´Ù. ¹°·Ð ÀÌ´Â ¾îµð±îÁö³ª ÃÖÀûÈ­ÀÇ ¹®Á¦À̱⠶§¹®¿¡ ÄÄÆÄÀÏ·¯°¡ ÇØ´ç ¼±¾ðÀÇ "static 10"À» ¹«½ÃÇØµµ ¹«¹æÇÏ´Ù.

¶Ç ´Ù¸¥ º¯È­´Â ¸Å°³º¯¼ö ¼±¾ð½Ã Æ÷ÀÎÅÍ¿¡ Çü ÁöÁ¤ÀÚ¸¦ Àû¿ëÇÏ´Â °Í°ú °ü·ÃµÈ ¹®Á¦ÀÌ´Ù. Áö±Ý±îÁö Æ÷ÀÎÅÍÀÇ °ªÀÌ º¯ÇÏÁö ¸øÇÏ°Ô Çϱâ À§ÇØ const °°Àº Çü ÁöÁ¤ÀÚ¸¦ Àû¿ëÇϰíÀÚ ÇÏ´Â °æ¿ì, ¸Å°³º¯¼ö ¼±¾ð¿¡ ¹è¿­ ÇüÅÂÀÇ ¼±¾ðÀ» »ç¿ëÇÒ ¼ö ¾ø¾ú´Ù. ÇÏÁö¸¸ C99¿¡¼­´Â ´ÙÀ½¿¡¼­ º¸´Â °Íó·³ ¸Å°³º¯¼ö ¼±¾ð¿¡ ¹è¿­ ¼±¾ðÀ» »ç¿ëÇØµµ Æ÷ÀÎÅÍ¿¡ Çü ÁöÁ¤ÀÚ¸¦ Àû¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¸¶·ÃÇØ ÁÖ¾ú´Ù.

void func(int b[const]);
void func(int * const b);

<tgmath.h>¸¦ ÅëÇÑ type-generic ¼öÇÐ ¸ÅÅ©·Î[Lib][Open]
<tgmath.h>´Â <math.h>¿¡¼­ Á¦°øÇÏ´Â °¢Á¾ ¼öÇÐ ÇÔ¼öµéÀ» ¸ÅÅ©·Î·Î Á¦°øÇÑ´Ù. Â÷À̰¡ ÀÖ´Ù¸é <math.h>ÀÇ ¼öÇÐ ÇÔ¼öµéÀº ¸Å°³º¯¼ö¿Í ¹Ýȯ°ªÀÇ µ¥ÀÌÅÍÇü¿¡ µû¶ó ¼­·Î ´Ù¸¥ ÇÔ¼ö¸íÀ¸·Î ±¸ºÐµÇ¾î ÀÖÁö¸¸ <tgmath.h>ÀÇ ¼öÇÐ ¸ÅÅ©·Î´Â ÁÖ¾îÁö´Â ÀÎÀÚÀÇ µ¥ÀÌÅÍÇü¿¡ µû¶ó ÇØ´çÇÏ´Â ¼öÇÐ ÇÔ¼ö·Î È®ÀåµÈ´Ù´Â °ÍÀÌ´Ù.

#include <tgmath.h>
float f = 3.14159;
result = sin(f);

¿¹¸¦ µé¾î ÀÌ¿Í °°Àº °æ¿ì, ¸ÅÅ©·Î sin()¿¡ ÀÇÇØ È£ÃâµÇ´Â ÇÔ¼ö´Â float ÇüÀÇ ÀÎÀÚ¿Í ¹Ýȯ°ªÀ» °®´Â sinf() ÇÔ¼ö°¡ µÈ´Ù. <tgmath.h>°¡ Á¦°øÇÏ´Â ÁÖ¿äÇÑ ÆíÀÇ´Â ÇÁ·Î±×·¥ Æ÷ÆÃ½Ã¿¡ ºûÀ» ¹ßÇÑ´Ù. ȯ°æÀÌ ¹Ù²î¾î È£ÃâÇÏ´Â ¼öÇÐ ÇÔ¼öÀÇ Á¾·ù¸¦ ¹Ù²Ù°íÀÚ ÇÏ´Â °æ¿ì(¿¹¸¦ µé¸é sinf()¿¡¼­ sinl()·Î), <tgmath.h>¸¦ »ç¿ëÇϸé ÇÔ¼ö¸íÀÇ º¯È­ ¾øÀÌ ÁÖ¾îÁö´Â ÀÎÀÚ¿Í ¹Ýȯ°ªÀ» ÀúÀåÇÏ´Â ´ë»óüÀÇ µ¥ÀÌÅÍÇü¸¸ ÀûÀýÈ÷ ¹Ù²ãÁÖ¸é µÈ´Ù. »ç½Ç <tgmath.h>¸¦ º¸°í C++ÀÇ "intrinsic"À̳ª "overloading"À» ¶°¿Ã¸®´Â »ç¶÷µéÀÌ ÀÖÀ»Áöµµ ¸ð¸£°Ú´Ù. ÇÏÁö¸¸ À§¿øÈ¸´Â Æ÷Æ®¶õÀÇ "generic function"À» <tgmath.h>ÀÇ ¸ðµ¨·Î »ï¾Ò±â ¶§¹®¿¡ À̸§µµ type-generic ¼öÇÐ ¸ÅÅ©·Î°¡ µÆ´Ù.

UCN¿Í È®Àå ¸íĪ[Lang][Open]
C99ºÎÅÍ´Â C ¾ð¾î°¡ º»°ÝÀûÀ¸·Î ISO/IEC 10646À» Áö¿øÇϱ⠽ÃÀÛÇÑ´Ù. ÇÁ·Î±×·¥ ¼Ò½º ³»¿¡¼­ ¹®ÀÚ¿­ »ó¼öÀÇ È®Àå¿­(escape sequence)°ú ºñ½ÁÇÑ ÇüÅÂ(\u ȤÀº \U·Î ½ÃÀÛ)·Î ISO/IEC 10646¿¡ Á¤ÀǵǾî ÀÖ´Â ¹®ÀÚ¸¦ ÁöÁ¤ÇØ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çã¶ôÇϰí ÀÖ´Ù. ¹°·Ð ¿Ü°ü»ó ÇüŰ¡ ¾Æ¸§´äÁö´Â ¾Ê±â¿¡ ÇÁ·Î±×·¥ ¼Ò½º ¾È¿¡¼­ UCN(Universal Character Name)À» »ç¿ëÇØ ISO/IEC 10646ÀÇ ¹®ÀÚ¸¦ ¾²´Â »ç¶÷Àº ¾øÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸ UCNÀÌ °®´Â Áß¿äÇÑ Àǹ̴ UCNÀÌ ¼­·Î ´Ù¸¥ ÀÎÄÚµùÀ» »ç¿ëÇÏ´Â µÎ ȯ°æ »çÀÌ¿¡¼­ ¸Å°³ ¿ªÇÒÀ» ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.

<±×¸² 2> UCNÀÇ ¿ªÇÒ

È®Àå ¹®ÀÚ¼ÂÀ» À§ÇÑ ÀÎÄÚµù(A)¿Í ÀÎÄÚµù(B)°¡ ¼­·Î ´Ù¸¦Áö¶óµµ, ÀÎÄÚµù(A)¸¦ »ç¿ëÇϴ ȯ°æ¿¡¼­ C99 ÄÄÆÄÀÏ·¯°¡ ÇÁ·Î±×·¥À» Ãâ·ÂÇÒ ¶§ ºñÇ¥ÁØ ¹®ÀÚµéÀ» ¸ðµÎ UCNÀ¸·Î Ãâ·ÂÇØÁÖ°í, À̸¦ ÀÎÄÚµù(B)°¡ Àоî Áö¿øÇÏ´Â ¹®ÀÚµéÀ» UCN¿¡¼­ º¯È¯ÇØÁÖ¸é ¼­·Î ´Ù¸¥ ÀÎÄÚµùÀ» Áö¿øÇϴ ȯ°æÀÓ¿¡µµ Å« ¹®Á¦ ¾øÀÌ ºñÇ¥ÁØ ¹®ÀÚ¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥µéÀÌ À̽ļºÀ» °®´Â´Ù´Â »ç½ÇÀ» ¾Ë¼ö ÀÖ´Ù. ¹°·Ð À̸¦ À§Çؼ­´Â °¢ °³¹ß ȯ°æÀÌ UCNÀ» ÃæºÐÈ÷ Áö¿øÇØÁÖ¾î¾ß ÇÑ´Ù.

¶ÇÇÑ UCN µµÀÔ°ú ´õºÒ¾î ±×µ¿¾ÈÀº Ç¥ÁØ ÀÔÀå¿¡¼­´Â À߸øµÈ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ·¯°¡ Çã¶ôÇØÁÖ´Â ¹æ½ÄÀ¸·Î Áö¿øÇÏ´ø ¸íĪ¿¡ ¾²ÀÌ´Â ºñÇ¥ÁØ ¹®ÀÚµµ ÀÌÁ¦´Â Ç¥ÁØ¿¡ ÀÇÇØ Çã¶ôµÈ´Ù. Áï ÄÄÆÄÀÏ·¯°¡ Çã¶ôÇÑ´Ù¸é ´ÙÀ½°ú °°Àº ÇÁ·Î±×·¥µµ °¡´ÉÇØÁö´Â °ÍÀÌ´Ù.

typedef int ·¹ÄÚµå;
·¹ÄÚµå ÀüüÇÕ, ÇöÀç;
for (ÇöÀç = 0; ÇöÀç < ÀüüÇÕ; ÇöÀç++)

¹°·Ð ÀÌ¿Í °°Àº ÇÁ·Î±×·¥ÀÌ ¿ÏÀüÇÑ À̽ļºÀ» °®ÃßÁö´Â ¸øÇÏÁö¸¸, ÄÄÆÄÀÏ·¯°¡ UCNÀ» ÀûÀýÈ÷ Áö¿øÇØÁØ´Ù¸é °¡µ¶¼ºÀº ¶³¾îÁ®µµ À̽ļºÀ» °®Ãâ ¹æ¹ýÀÌ ¾ø´Â °ÍÀº ¾Æ´Ï´Ù.

16Áø ºÎµ¿ »ó¼ö[Lang][Lib][Open]
C ÇÁ·Î±×·¥¿¡¼­ ºÎµ¿ »ó¼ö´Â Ç×»ó 10Áø¼ö ÇüÅ¿´Áö¸¸, ¿À·¡ ÀüºÎÅÍ ¸¹Àº ȯ°æÀÌ ºÎµ¿ ¼Ò¼ö Ç¥ÇöÀ» À§ÇØ ±â¼ö(radix)¸¦ 2·Î »ç¿ëÇØ ¿Ô´Ù. °á±¹ ±× Ç¥ÇöÀÇ ÇѰè·Î ÀÎÇØ 10Áø ºÎµ¿ »ó¼ö¸¦ »ç¿ëÇØ ºÎµ¿ ¼Ò¼ö Ç¥ÇöÀÇ °¡¼öºÎ(significand)¸¦ Ç×»ó Á¤È®È÷ ¸í½ÃÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´ø ¼ÀÀ̾ú´Ù. C99¿¡¼­´Â ±â¼ö°¡ 2 (ȤÀº 2n)ÀÎ ºÎµ¿ ¼Ò¼öÁ¡ Ç¥ÇöÀÇ °¡¼öºÎ¸¦ ´õ ¸íÈ®ÇÏ°Ô ±â¼úÇÒ ¼ö ÀÖµµ·Ï ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ 16Áø ºÎµ¿ »ó¼ö¸¦ Áö¿øÇÑ´Ù.

0x10ff0100p-8f
    == 00010000111111110000000100000000(2) * 2-8

ÀÌ¿Í °°Àº 16Áø ºÎµ¿ »ó¼ö´Â ¿¹¸¦ µé¾î À̽ļºÀ» °®Ãß¸ç °°Àº Ç¥ÁØ ¶óÀ̺귯¸®¸¦ ±¸ÇöÇÒ ¶§ À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö ÀÖ´Ù. Ãß°¡·Î 16Áø ºÎµ¿ »ó¼ö¸¦ Ãâ·ÂÇÒ ¼ö ÀÖµµ·Ï printf() °è¿­ ÇÔ¼ö¿¡´Â %a¿Í %A°¡ »õ·Î Ãß°¡µÆ´Ù.

º¹ÇÕ »ó¼ö[Lang][Open]
º¹ÇÕ »ó¼ö(compound literal)¶õ ÁýÇÕüÇü(¹è¿­, ±¸Á¶Ã¼, °ø¿ëü)ÀÇ »ó¼ö¸¦ ÀǹÌÇÑ´Ù. Áö±Ý±îÁö´Â ¹®ÀÚ¿­ »ó¼ö(¹®ÀÚÇüÀÇ ¹è¿­·Î Ãë±ÞµÊ) °°Àº Ư¼öÇÑ °æ¿ì¸¦ Á¦¿ÜÇϸé, ÁýÇÕüÇüÀº ¸íĪÀÌ ºÙÁö ¾ÊÀº »ó¼ö¸¦ °®Áö ¸øÇß´Ù. ÇÏÁö¸¸ ÀÌÁ¦´Â º¹ÇÕ »ó¼ö°¡ ±× ¹æ¹ýÀ» Á¦°øÇÑ´Ù.

void func(struct foo param);
func((struct foo) { 123, 3.14159 });

void func2(struct foo *p);
func2(&(struct foo) { 123, 3.14159 });

int *p = (int [3]) { 1, 2, 3 });
const int *a1 = (const int []) { 1, 2, 3 };
const int *a2 = (const int []) { 1, 2, 3 };

º¹ÇÕ »ó¼ö¿Í °ü·ÃµÈ ¸î¸î ±ÔÄ¢Àº ±î´Ù·Î¿ö¼­ ¼³¸í¿¡ ¸¹Àº Áö¸éÀ» ÇÊ¿ä·Î ÇÑ´Ù. ¿©±â¼­´Â ¸î °¡Áö Áß¿äÇÑ ±ÔÄ¢¸¸À» ÁöÀûÇØ º¸°Ú´Ù. ¿ì¼± ¡®literal¡¯À» ¡®»ó¼ö¡¯·Î ¹ø¿ªÇÏ´Â °ü·Ê ¶§¹®¿¡ ¹¯Èú ¼ö ÀÖ´Â »ç½ÇÀÌÁö¸¸, ¹®ÀÚ¿­ »ó¼ö(string literal)°¡ ±×·¯ÇÏµí º¹ÇÕ »ó¼ö ¿ª½Ã ´ë»óü¿¡ ÇØ´çÇÑ´Ù. µû¶ó¼­ Á¤¼ö »ó¼ö °°Àº ÁøÂ¥ »ó¼ö¿Í´Â ´Þ¸® ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ¸ç ¡®&¡¯ ¿¬»êÀÚ¸¦ ÀÌ¿ëÇØ ÁÖ¼Ò¸¦ ÃëÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ¶ÇÇÑ º¹ÇÕ »ó¼öÀÇ µ¥ÀÌÅÍÇüÀÌ const·Î ÇÑÁ¤µÇ¾î ±× ³»¿ëÀÌ º¯ÇÏÁö ¾Ê´Â °æ¿ì °°Àº ³»¿ëÀÇ º¹ÇÕ »ó¼ö´Â °°Àº ¸Þ¸ð¸® °ø°£À» Â÷ÁöÇÒ ¼öµµ ÀÖ´Ù. Áï, ¿¹¿¡¼­ Æ÷ÀÎÅÍ a1°ú a2°¡ °¡¸®Å°´Â ¸Þ¸ð¸® °ø°£ÀÌ µ¿ÀÏÇÒ ¼öµµ ÀÖ´Ù. ¶Ç Çϳª À¯ÀÇÇØ¾ß ÇÒ »çÇ×Àº º¹ÇÕ »ó¼ö°¡ ¸Þ¸ð¸®¸¦ Â÷ÁöÇϰí ÀÖ´Â ½Ã°£ÀÌ´Ù.

int i = 0, *p[3];
p[i] = (int [1]) { i++ };
p[i] = (int [1]) { i++ };
p[i] = (int [1]) { i++ };
------------------------------------
for (i = 0; i < 3; i++) {
    p[i] = (int [1]) { i++ };
}

ÀÌ µÎ ¿¹ÀÇ ÇൿÀº ¿ÏÀüÈ÷ ´Ù¸£´Ù. ¿ìÃø¿¡¼­ for ¹®¿¡ ÀÇÇØ {...}·Î ±¸¼ºµÈ ºí·ÏÀ» µå³ªµé ¶§¸¶´Ù º¹ÇÕ »ó¼ö´Â »ý¼ºµÆ´Ù°¡ »ç¶óÁö±â¸¦ ¹Ýº¹ÇÑ´Ù. °á±¹ ÇØ´ç ·çÇÁ°¡ Á¾·áµÇ¸é p[]ÀÇ °¢ Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ¸Þ¸ð¸® °ø°£Àº À¯È¿ÇÏÁö ¾ÊÀº °ø°£ÀÌ µÈ´Ù. Âü°í·Î º¹ÇÕ »ó¼ö´Â ÀÌÀü È£¿¡¼­ ¼³¸íÇß´ø ÁöÁ¤µÈ ÃʱâÄ¡¸¦ ÅëÇØ ÇÁ·Î±×·¥À» ´õ °£´ÜÇϰí Á÷°üÀûÀ¸·Î ¸¸µé ¼ö ÀÖ´Ù. ´ÙÀ½ÀÇ µÎ ¿¹¸¦ ºñ±³Çغ¸ÀÚ.

struct timeval tv = { 0, n };
// ...
select(0, 0, 0, 0, &tv);
-------------------------------------------------------------------
select(0, 0, 0, 0, &(struct timeval) { .tv_usec = n });

_Pragma Àü󸮱⠿¬»êÀÚ[Lang][Open]
Àü󸮱â Áö½ÃÀÚÀÎ #pragma´Â ±âº»ÀûÀ¸·Î ÄÄÆÄÀÏ·¯°¡ È®ÀåÀ¸·Î Á¦°øÇÏ´Â ¿©·¯ ±â¼ú¿¡ Á¢±ÙÇÒ ¶§ »ç¿ëÇÑ´Ù. ÇÏÁö¸¸ ÇÑ °¡Áö ¹®Á¦Á¡Àº #pragma Áö½ÃÀÚ¸¦ ´Ù¸¥ ¸ÅÅ©·Î¿Í ¼¯¾î »ç¿ëÇϱⰡ ¾î·Æ´Ù´Â °ÍÀÌ´Ù.

#define struct_pack(n) #pragma pack(n)
struct_pack(1)

¸ÅÅ©·Î°¡ È®ÀåµÈ °á°ú´Â Àü󸮱â Áö½ÃÀÚ ¿ªÇÒÀ» ÇÒ ¼ö ¾ø´Ù´Â ±ÔÄ¢¿¡ ÀÇÇØ ÀÌ ¿¹´Â Àǵµ´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù.

#if defined(A_COMPILER)    /* A_COMPILER */
#    define pack strict_pack
#else                        /* B_COMPILER */
#    define pack __pack(1)
#endif
#pragma pack

ÀÌ °æ¿ì #pragma Áö½ÃÀÚ µÚÀÇ ¸ÅÅ©·Î°¡ È®ÀåµÈ´Ù´Â º¸ÀåÀÌ ¾ø¾î ¿ª½Ã³ª Àǵµ´ë·Î ÀÛµ¿ÇÒÁö ¹ÌÁö¼ö´Ù. ÀÌ·± ±Ùº»ÀûÀÎ ¹®Á¦ ÇØ°áÀ» À§ÇØ _Pragma Àü󸮱⠿¬»êÀÚ°¡ µîÀåÇß´Ù. ÀÛµ¿ ¿ø¸®´Â ´ÙÀ½ ¿¹¸¦ º¸¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

#define struct_pack(n) _Pragma("pack("#n")")
struct_pack(1)    /* #pragma pack(1) */

#if defined(A_COMPILER)    /* A_COMPILER */
#    define pack "strict_pack"
#else                        /* B_COMPILER */
#    define pack "__pack(1)"
#endif
_Pragma(pack)    /* #pragma strict_pack ȤÀº #pragma __pack(1) */

ºÒ µ¥ÀÌÅÍÇüÀÇ Ãß°¡[Lang][Lib][Open]
C´Â ÀüÅëÀûÀ¸·Î 0 ȤÀº 0ÀÌ ¾Æ´Ñ °ªÀ¸·Î Âü/°ÅÁþÀ» Ç¥ÇöÇÏ¸ç º¸ÅëÀÇ Á¤¼öÇüÀ» »ç¿ëÇØ ¿Ô´Ù. ÀÌ·¯ÇÑ ÀüÅëÀº ±»°Ô ÀÚ¸®Àâ¾Æ ¿À¹¦ÇϰԵµ C ÇÁ·Î±×·¡¸ÓµéÀÇ ÀںνÉÀ¸·Î±îÁö À̾îÁö±âµµ ÇÏÁö¸¸, C99´Â C ¾ð¾î¿¡ ºÒ µ¥ÀÌÅÍÇü(boolean type)À» °ø½ÄÀûÀ¸·Î Ãß°¡Çß´Ù. ¸íĪ Ãæµ¹À» ÇÇÇϱâ À§ÇØ ºÒ µ¥ÀÌÅÍÇüÀº _BoolÀ̶ó´Â Çü ÁöÁ¤ÀÚ¸¦ °®´Â´Ù. _BoolÀº 0 ȤÀº 1¸¸À» ÀúÀåÇÒ ¼ö ÀÖ´Â ¹«ºÎÈ£ Á¤¼öÇüÀ¸·Î »ê¼úÇü°ú Æ÷ÀÎÅÍÇüÀ» _BoolÇüÀ¸·Î º¯È¯ÇÏ´Â °æ¿ì 0°ú ºñ±³ÇÑ °á°ú(0 ȤÀº 1)°¡ ³ª¿Â´Ù.

_Bool b, *pb;
b = 0;        /* b = 0; */
b = -1;        /* b = 1; */
pb = &b;        /* pb´Â ³Î Æ÷ÀÎÅͰ¡ ¾Æ´Ô */
b = pb;        /* µû¶ó¼­ b = 1; */
b = (_Bool) 0.5;    /* b = 1; */

¿¹¿¡¼­ Æ÷ÀÎÅ͸¦ ´ëÀÔÇßÀ» ¶§ÀÇ °á°ú¿Í ºÎµ¿ »ó¼ö¸¦ ´ëÀÔÇßÀ» ¶§ÀÇ °á°ú¿¡ À¯ÀÇÇϱ⠹ٶõ´Ù. 0.5¸¦ _BoolÇüÀÌ ¾Æ´Ñ Á¤¼öÇüÀ¸·Î º¯È¯ÇÏ´Â °æ¿ì ¼Ò¼öÁ¡ ÀÌÇϸ¦ ÀÚ¸¥ ÈÄ¿¡ 0À» ´ëÀÔÇÏ°Ô µÈ´Ù. ÇÁ·Î±×·¡¸Ó°¡ ÇÁ·Î±×·¥¿¡ À̶ó´Â Çì´õ¸¦ ÷°¡ÇÏ´Â °æ¿ì, ´Ù¼Ò ±âÀÌÇÏ°Ô »ý±ä ¸íĪ _Bool°ú 0, 1À̶ó´Â °ª ´ë½Å boolÀ̶ó´Â ¸íΰú true, false¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

#include <stdbool.h>
bool b1, b2;
if (func1() && !func2())
    b1 = true, b2 = false;

¹°·Ð bool, false, true¶ó´Â ¸íĪÀ» ´Ù¸¥ ¿ëµµ·Î ÀÌ¹Ì »ç¿ë ÁßÀÎ ÇÁ·Î±×·¥Àº ¸¦ ÷°¡ÇÏÁö ¾ÊÀ¸¸é »õ·Î Ãß°¡µÈ ºÒ µ¥ÀÌÅÍÇü¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù.

__func__ ±âÁ¤ÀÇ ¸íĪ[Lang][Open]
ÇÁ·Î±×·¥À» µð¹ö±ëÇÏ´Â °úÁ¤¿¡¼­ ºó¹øÇÏ°Ô ÇÊ¿äÇÑ ±â¼ú Áß Çϳª°¡ ÇöÀç ½ÇÇà ÁßÀÎ ÇÔ¼öÀÇ ¸íĪÀ» ¾ò´Â °ÍÀÌ´Ù. µð¹ö±ë ¸Þ½ÃÁö¿¡ ÇÔ¼öÀÇ ¸íĪÀ» Ãâ·ÂÇØ ¹®Á¦°¡ ÀÖ´Â ºÎºÐÀ» Á» ´õ ½±°Ô ã±â À§Çؼ­ÀÌ´Ù. ¸¹Àº ÄÄÆÄÀÏ·¯´Â À̸¦ À§ÇØ ÁÖ·Î ÇöÀç ½ÇÇà ÁßÀÎ ÇÔ¼ö¸íÀ¸·Î È®ÀåµÇ´Â ¸ÅÅ©·Î(gccÀÇ °æ¿ì __FUNCTION__)¸¦ Á¦°øÇϰí ÀÖÁö¸¸, C99´Â °°Àº ¸ñÀûÀ» À§ÇØ ¸ÅÅ©·Î¸íÀÌ ¾Æ´Ñ ±âÁ¤ÀÇ ¸íĪÀ» Á¦°øÇϰí ÀÖ´Ù. Áï, ÇÔ¼ö ½ÃÀÛÀ» ³ªÅ¸³»´Â { ÀÌÈÄ¿¡ ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ ¼±¾ðÀÌ Á¸ÀçÇÏ´Â °Íó·³ ÀÛµ¿ÇÑ´Ù.

static const char __func__[] = "ÇÔ¼ö¸í";

ÁÖÀÇÇÒ Á¡Àº __func__Àº ¸ÅÅ©·Î°¡ ¾Æ´Ï±â¿¡ ´ÙÀ½ÀÇ È®Àå °á°ú´Â ÀǵµÇÏÁö ¾ÊÀº "__func__"°¡ µÈ´Ù.

#define str(x) #x
#define xstr(x) str(x)
xstr(__func__);

C99 ÀÌÈÄÀÇ C ¾ð¾î
C Ç¥ÁØÈ­À§¿øÈ¸´Â C99¸¦ ¹ßÇ¥ÇÑ ÀÌÈÄ¿¡µµ C99¿Í °ü·ÃµÈ ¿©·¯ ¹®Á¦¸¦ °ËÅäÇÏ´Â ÀÛ¾÷À» ²ÙÁØÈ÷ ÁøÇàÇϰí ÀÖÀ¸¸ç, C90ÀÇ AMD1ó·³ C ¾ð¾îÀÇ ´É·ÂÀ» È®ÀåÇϱâ À§ÇØ Å©°Ô ¼¼ °¡Áö ÇüÅÂÀÇ ±â¼ú º¸°í¼­(TR)¿¡ ´ëÇÑ ÀÛ¾÷À» ÁøÇà ÁßÀÌ´Ù.ù ¹øÂ°´Â C ¾ð¾î°¡ °¡Àå Å« Ȱ¾àÀ» º¸À̰í ÀÖ´Â ÀÓº£µðµå ºÐ¾ß¸¦ À§ÇÑ C ¾ð¾îÀÇ È®ÀåÀÌ´Ù. ÇöÀç ÀÓº£µðµå ºÐ¾ß¿¡¼­ C ¾ð¾î°¡ º¸´Ù À̽ļºÀ» °®°í È¿À²ÀûÀ¸·Î »ç¿ëµÉ ¼ö ÀÖµµ·Ï C ¾ð¾î¸¦ È®ÀåÇÏ´Â ÀÛ¾÷ÀÌ °ÅÀÇ ¸¶¹«¸® ÁßÀÌ´Ù(TR18037).

µÎ ¹øÂ°´Â C ¾ð¾î°¡ ISO/IEC 10646À» º¸´Ù Àû±ØÀûÀ¸·Î Áö¿øÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÑ ÀÛ¾÷ÀÌ´Ù. óÀ½ ¼Ò°³Çß´ø È®Àå ¹®ÀÚ³ª ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚÀÇ ÀϹÝÈ­µÈ °³³äÀ» ¶Ù¾î³Ñ¾î ´õ¿í ¸íÈ®ÇÑ ¹æ¹ýÀ¸·Î ISO/IEC 10646À» Áö¿øÇϱâ À§ÇØ »õ·Î¿î ¹®ÀÚÇüÀ» µµÀÔÇÏ´Â µîÀÇ È®ÀåÀ» ÁøÇàÇϰí ÀÖ´Ù(TR19769).

¸¶Áö¸·Àº ½ÊÁø ºÎµ¿¼Ò¼öÁ¡ ¿¬»ê¿¡ ´ëÇÑ Áö¿øÀ» À§ÇÑ ÀÛ¾÷ÀÌ´Ù. ÀÌ¹Ì ¼³¸íÇßµíÀÌ ÀÏ¹Ý ÄÄÇ»ÅÍ¿¡¼­´Â ÀÌÁø ºÎµ¿¼Ò¼öÁ¡ ¿¬»êÀÌ ´ë¼¼¸¦ ÀÌ·ç°í ÀÖÁö¸¸, ¾ÆÁ÷µµ Ư¼öÇÑ ºÐ¾ß¿¡¼­´Â ½ÊÁø ºÎµ¿¼Ò¼öÁ¡ ¿¬»êÀ» »ç¿ëÇϰí ÀÖ´Ù. C ¾ð¾î´Â °ÑÀ¸·Î´Â ºÎÁ·ÇÔÀÌ ¾ø¾î º¸¿©µµ ½ÊÁø ºÎµ¿¼Ò¼öÁ¡ ¿¬»ê Áö¿ø¿¡ ¸î¸î ½É°¢ÇÑ ¹®Á¦¸¦ ¾È°í ÀÖ´Ù. À̸¦ ÇØ°áÇϱâ À§ÇÑ È®ÀåÀÌ ÁøÇà ÁßÀÌ´Ù(TR24732).

ÀÌ·¸°Ô ÀÌ·ç¾îÁö´Â ÀÛ¾÷Àº ÃßÈÄ Ç¥ÁØÀÇ È®ÀåÀ̳ª »õ·Î¿î Ç¥ÁØ¿¡¼­ ´Ù·ç´Â Çü½ÄÀ¸·Î ¿ì¸®µé¿¡°Ô ã¾Æ¿Ã °ÍÀÌ´Ù. ¶Ç Çϳª C ¾ð¾îÀÇ ¹Ì·¡¿¡ ´ëÇØ À̾߱âÇÒ ¶§ °­Á¶ÇÏ°í ½ÍÀº ºÎºÐÀº C++¿ÍÀÇ °ü°èÀÌ´Ù. ÇöÀç C¿Í C++´Â ¼­·Î ´Ù¸¥ À§¿øÈ¸¿¡ ÀÇÇØ Ç¥ÁØÈ­°¡ ÁøÇà ÁßÀÌ´Ù.

µÎ ¾ð¾î°¡ »ó´çÈ÷ À¯»çÇÑ ºÎºÐÀ» ´ã°í ÀÖ°í ¼­·Î ¿µÇâÀ» ÁÖ°í¹Þ´Â´Ù´Â »ç½ÇÀ» ºÎÀÎÇÒ ¼ö´Â ¾øÁö¸¸, µÎ ¾ð¾î°¡ ¼­·Î ´Ù¸¥ »ç¿ëÀÚÃþ°ú »ç¿ë ȯ°æÀ» ¹ÙÅÁÀ¸·Î ¹ßÀüÇØ°¡°í Àֱ⠶§¹®¿¡ ½Ã°£ÀÌ Áö³¯¼ö·Ï µÎ ¾ð¾îÀÇ °øÅëÁ¡Àº ±×¾ß¸»·Î ¡°¿ª»çÀû ¿ì¿¬¼º¡±¿¡ ±âÀÎÇÑ °ÍÀ¸·Î º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. µû¶ó¼­ µÎ ¾ð¾î Áß Çϳª°¡ ´Ù¸¥ ÇϳªÀÇ ´Ù¸¥ ¹öÀüÀ̶óµç°¡ ³ªÁß ¹öÀüÀ̶ó´Â ½ÄÀÇ ÇØ¼®Àº ±×¸® ÇÕ¸®ÀûÀ̶ó°í º¼ ¼ö ¾ø´Ù. ½Ã°£ÀÌ Áö³ª¸é Áö³¯¼ö·Ï µÎ ¾ð¾î¸¦ µ¶¸³µÈ ¾ð¾î·Î º¸´Â ½Ã°¢ÀÌ Áö¹èÀûÀÌ µÉ °ÍÀÌ´Ù.

º¯Çذ¡´Â C ¾ð¾î¸¦ À§ÇØ
ÀÌÁ¦ C99ÀÇ »õ ±â¼úÀ» ¼Ò°³ÇÏ´Â 3°³¿ù°£ÀÇ ¿©Á¤µµ ³¡³µ´Ù. ºÎÁ·ÇÑ ±Û ¼Ø¾¾·Î ÀÛÀº Áö¸é¿¡ ¸¹Àº ³»¿ëÀ» ´ã°íÀÚ ¾Ö¾²´Ùº¸´Ï ±×¸® Ä£ÀýÇÑ ±â»ç°¡ µÇÁö ¸øÇÑ °Í °°¾Æ ¾ÈŸ±î¿òÀÌ ¸¹ÀÌ ³²´Â´Ù. À̰÷¿¡¼­ ´Ù·é ³»¿ëÀÌ C99ÀÇ ´Ù¾çÇÑ »õ ±â¼úÀ» öÀúÈ÷ ¼Ò°³Çϰí ÀÖÁö´Â ¸øÇÏÁö¸¸ ¾ÕÀ¸·Î º¯Çذ¡´Â C ¾ð¾îÀÇ ¸ð½ÀÀ» Á¢ÇÒ ¶§ Á¶±ÝÀÌ¶óµµ µµ¿òÀÌ µÇ±â¸¦ ¹Ù¶õ´Ù. ´Ã ±×·¸µí À̹ø ¿ø°í¿¡ ´ëÇÑ ¾î¶°ÇÑ ÁöÀûÀ̳ª Áú¹®, ±âŸ Àǰߵµ ȯ¿µÀ̸ç, ÇÊÀÚÀÇ ¸ÞÀÏÀ̳ª ȨÆäÀÌÁö °Ô½ÃÆÇÀ» ÅëÇØ ¾Ë·ÁÁÖ¸é ÀÚ¼¼ÇÑ ´äº¯À» µå¸± °ÍÀ» ¾à¼ÓÇÑ´Ù. Âü°í·Î ÀÌ ¿¬Àç´Â µÎ Â÷·Ê¿¡ °ÉÃÄ KLDP ¼¼¹Ì³ª¸¦ ÅëÇØ ¹ßÇ¥Çß´ø ³»¿ëÀ» º¸°­ Á¤¸®ÇÑ °ÍÀÌ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº http://doc.kldp.org/wiki.php/KLDPConf/20031011°ú http://doc.kldp.org/wiki.php/KLDPConf/20040118¿¡¼­ ¸¸³¯ ¼ö ÀÖ´Ù. @

¼Ò°³ÇÏÁö ¸øÇÑ C99ÀÇ »õ±â¼ú  
¿¬ÀçÀÇ Ã¹È¸ºÎÅÍ Áö±Ý±îÁö ¼Ò°³ÇÑ ±â¼ú À̿ܿ¡µµ C99´Â ´Ù¼öÀÇ »õ·Î¿î ±â¼úÀ» Á¦°øÇÏÁö¸¸ ºÎÁ·ÇÑ Áö¸éÀ¸·Î ³ª¸ÓÁö ±â¼úµéÀº °£´ÜÈ÷ ¾ð±Þ¸¸ÇÏ°í ³Ñ¾î°¡µµ·Ï ÇϰڴÙ. ¼¼¼¼ÇÑ ³»¿ëÀ» ¾ð±ÞÇϱ⺸´Ù´Â Àǵµ¿Í È帧À» ¤À» ¼ö ÀÖµµ·Ï ¼³¸íÇϰڴÙ.
¡ß ¿Í ¸¦ ÅëÇØ Á¦°øµÇ´Â È®Àå Á¤¼öÇü°ú ¶óÀ̺귯¸®[Lib]
ƯÁ¤ ºñÆ®¼ö¸¦ °®´Â Á¤¼öÇü, ÃÖ¼ÒÇÑ Æ¯Á¤ Å©±â¸¦ °®´Â Á¤¼öÇü µî ÄÄÆÄÀÏ·¯°¡ È®ÀåÀ¸·Î Á¦°øÇÏ´Â Á¤¼öÇüÀÌ Á¸ÀçÇÏ´Â °æ¿ì ÇÁ·Î±×·¥¿¡¼­ À̽ļºÀ» ÀÒÁö ¾ÊÀ¸¸é¼­ ½±°Ô Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÑ ±â¼úÀ» Á¦°øÇÑ´Ù.
¡ß Áº¯°ªÀ¸·Î Á¦ÇѵÇÁö ¾Ê´Â ¹è¿­ÀÇ Æ÷ÀÎÅÍ·ÎÀÇ º¯È¯[Lang][Open][C++]
ÀÌ´Â C90 ÀÌÈÄ ¾ð¾î¿¡ Á¸ÀçÇÏ´Â ¹Ì¹¦ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ °ÍÀ¸·Î, ÇÔ¼ö°¡ ¹è¿­À» ¸â¹ö·Î Æ÷ÇÔÇÏ´Â ±¸Á¶Ã¼ °ªÀ» ¹ÝȯÇÒ ¶§ Â÷À̸¦ º¸ÀÏ ¼ö ÀÖ´Â º¯È­ÀÌ´Ù.
¡ß ÀζóÀÎ ÇÔ¼ö Ãß°¡¿Í ¹Ýº¹¹® ¹× ¼±Åù®ÀÇ »õ·Î¿î ºí·° Åë¿ë ¹üÀ§[Lang][Open][C++]
C99´Â C++¿¡¼­ »ç¿ëµÇ´ø °³³äÀÎ ÀζóÀÎ ÇÔ¼ö(inline function)¿Í for ¹®ÀÇ Ã¹ ¹øÂ° ¼ö½ÄÀÌ ¼ö½Ä»Ó ¾Æ´Ï¶ó ¼±¾ðÀÌ µÉ ¼ö ÀÖ´Â ±¸Á¶¸¦ ¹Þ¾Æµé¿´´Ù.
¡ß signed/unsigned long long intÇüÀÇ Ãß°¡[Lang][Lib][Open]
C99¿¡´Â ÃÖ¼Ò 64ºñÆ®ÀÇ Å©±â¸¦ °®´Â long long intÇüÀÌ Ãß°¡µÆ°í, ÀÌ¿Í ´õºÒ¾î Á¤¼ö »ó¼öÀÇ µ¥ÀÌÅÍÇüÀ» °áÁ¤ÇÏ´Â ±ÔÄ¢, Á¤¼ö Áø±Þ(integer promotion)°ú °ü·ÃµÈ ±ÔÄ¢¿¡µµ º¯È­°¡ »ý°å´Ù. ¹°·Ð ¶óÀ̺귯¸® ÂÊ¿¡¼­µµ long long int ÇüÀ» Áö¿øÇϱâ À§ÇÑ º¯È­°¡ µÚµû¶ú´Ù.
¡ß enumÇüÀÇ ÃʱâÄ¡¿¡¼­ ¿©ºÐÀÇ ½°Ç¥ Çã¶ô[Lang][Open]
C ¾ð¾î´Â »ç¶÷¿¡ ÀÇÇØ ÀÛ¼ºµÇ´Â ÇÁ·Î±×·¥»Ó¸¸ ¾Æ´Ï¶ó ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ÀÇÇØ ÀÛ¼ºµÇ´Â C ÇÁ·Î±×·¥¿¡ ´ëÇØ¼­µµ °í·ÁÇϰí ÀÖ´Ù. C99 ÀÌÀü¿¡´Â ÁýÇÕüÇüÀÇ ÃʱâÄ¡¿¡ ´ëÇØ¼­¸¸ ¿©ºÐÀÇ ½°Ç¥¸¦ Çã¶ôÇßÀ¸³ª C99´Â ±ÕÇüÀ» ¸ÂÃß°í ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ ´õ ½±°Ô C ÇÁ·Î±×·¥À» »ý¼ºÇÒ ¼ö ÀÖµµ·Ï ¿­°ÅÇü¿¡ ´ëÇØ¼­µµ ¿©ºÐÀÇ ½°Ç¥¸¦ Çã¶ôÇÑ´Ù.
¡ß IEEE 754 ¿¬»ê Áö¿ø°ú º¹¼Ò¼ö Áö¿ø, Ç¥ÁØ pragma Á¦°ø[Lang][Lib]
C90/C95´Â C ¾ð¾îÀÇ ºÎµ¿¼Ò¼öÁ¡ ¸ðµ¨À» ¸Å¿ì ³Ê±×·´°Ô Ç®¾îÁÖ´Â ¼öÁØ¿¡¼­ ºÎµ¿¼Ò¼öÁ¡ ¿¬»ê¿¡ ´ëÇÑ Áö¿øÀ» ¸ØÃèÀ¸³ª C99´Â ÇØ´ç ȯ°æÀÌ Áö¿øÇÏ´Â °æ¿ì IEEE 754 ¿¬»ê(IEC 559 ¿¬»ê)À» º¸´Ù Àß Áö¿øÇϰí ÀÖ´Ù. ¶ÇÇÑ ºÎµ¿¼Ò¼ö ȯ°æ¿¡ ´ëÇÑ Ãß°¡ÀûÀÎ Á¤º¸¿Í Á¢±ÙÀ» Çã¶ôÇϱâ À§ÇØ ¶ó´Â Çì´õ°¡ »õ·Î Ãß°¡µÆ°í, ±âÁ¸ÀÇ °¡ È®À嵯´Ù. ¶ÇÇÑ ÇÔ¼ö´Â ´Ù¾çÇÑ ¼öÇÐ ÇÔ¼ö¸¦ Ãß°¡·Î Á¦°øÇϸç, ¸¦ ÅëÇØ¼­ º¹¼Ò¼ö¿¡ ´ëÇÑ Áö¿øµµ ¹ÞÀ» ¼ö ÀÖ´Ù. ºÎµ¿¼Ò¼ö ¿¬»ê¿¡ ´ëÇÑ Áö¿øÀÇ ÀϺκÐÀ¸·Î #pragma STDC...¿Í °°Àº ÇüŸ¦ ÅëÇØ »ç¿ëÇÒ ¼ö Àִ ǥÁØ pragmaµµ Á¦°øÇϰí ÀÖ´Ù.
¡ß Àü󸮱⠿¬»êÀ» intmax_t/uintmax_t·Î ¼öÇà[Lang][Open]
Àü󸮱⠿¬»êÀº ½ÇÇà ÁßÀÌ ¾Æ´Ñ ¹ø¿ª½Ã¿¡ ¼öÇàµÈ´Ù´Â Ư¡ÀÌ ÀÖ´Ù. C90¿¡¼­´Â ¹ø¿ª ȯ°æ¿¡ ¸î °¡Áö Á¦¾àÀ» °¡Çϸ鼭 ¹ø¿ª ȯ°æÀ» ±âÁØÀ¸·Î Àü󸮱⠿¬»êÀÌ ¼öÇàµÇµµ·Ï ±ÔÁ¤ÇßÀ¸³ª, C99¿¡¼­´Â ½ÇÇà ȯ°æÀÇ °¡Àå Å« Á¤¼öÇüÀÎ intmax_t/uintmax_t¸¦ »ç¿ëÇØ ½ÇÇà ȯ°æÀ» Ư¼º¿¡ µû¶ó ¼öÇàµÇµµ·Ï ¿ä±¸Çϰí ÀÖ´Ù. ´Ü, ¾î¶°ÇÑ °æ¿ì¿¡µµ Àü󸮱⠿¬»êÀ» ÅëÇØ ½ÇÇà ȯ°æ¿¡ ´ëÇÑ °Ë»ç¸¦ ½ÃµµÇÏ´Â °ÍÀº À§ÇèÇÏ´Ù.
¡ß ±âÁ¤ÀÇ ¸ÅÅ©·Î Ãß°¡ Á¦°ø[Lang]
ȯ°æ¿¡ ´ëÇÑ ±¸ºÐÀ̳ª ÇØ´ç ȯ°æÀÌ Áö¿øÇÏ´Â ±â¼ú¿¡ ´ëÇÑ °Ë»ç¸¦ ¼öÇàÇÒ ¼ö ÀÖµµ·Ï __STDC_HOSTED__, __STDC_IEC_559__, __STDC_IEC_559_COMPLEX__, __STDC_ISO_10646__ °°Àº Ãß°¡ÀûÀÎ ±âÁ¤ÀÇ ¸ÅÅ©·Î¸¦ Á¦°øÇϰí ÀÖ´Ù.
¡ß À̽ļº ÀÖ´Â Çì´õ¸í¿¡ ´ëÇÑ Á¦ÇÑ ¿ÏÈ­[Lang][Open]
ÄÄÇ»ÆÃ ȯ°æÀÌ ´õ ³Ë³ËÇØÁ³±â¿¡ À̽ļºÀ» °®´Â Çì´õ¸í¿¡ ´ëÇÑ Á¦ÇÑÀÌ ¿ÏÈ­µÆ´Ù. ¹°·Ð Ç¥ÁØÀº Áö±ØÈ÷ º¸¼öÀûÀΠŵµ¸¦ ÃëÇÒ Çʿ䰡 Àֱ⠶§¹®¿¡ ÀÌ Á¦ÇÑÀº ½ÇÁ¦ ´Ù¼öÀÇ È¯°æÀÌ Çã¶ôÇÏ´Â °Í¿¡ ºñÇϸé Áö±ØÈ÷ ¾ö°ÝÇÏ´Ù.
¡ß strftime() ÇÔ¼öÀÇ Ãß°¡ º¯È¯ ÁöÁ¤ÀÚ[Lib][Open]
³¯Â¥¿Í ½Ã°£ Ç¥Çö¿¡ ´ëÇÑ ±¹Á¦ Ç¥ÁØÀÎ ISO 8601À» Áö¿øÇϱâ À§ÇØ <time.h>À» ÅëÇØ Á¦°øµÇ´Â strftime() ÇÔ¼öÀÇ º¯È¯ ÁöÁ¤ÀÚ°¡ ´ëÆø Ãß°¡µÆ´Ù.
¡ß ¹ÙÀ̳ʸ® ÆÄÀÏÀÇ ½ÃÀÛ À§Ä¡¿¡¼­ ungetc() È£Ãâ ±ÝÁö[Lib][Open]
¹ÙÀ̳ʸ® ÆÄÀÏÀÇ ½ÃÀÛ À§Ä¡¿¡¼­ ó¸®µÈ ÀÔ·ÂÀ» µÇµ¹¸®±â À§ÇÑ ungetc() ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀÌ »ç½Ç»ó ±ÝÁöµÆ´Ù. C99¿¡¼­ »ç¿ëÀ» ¾ïÁ¦ÇÑ ÈÄ¿¡ Â÷±â Ç¥ÁØ¿¡¼­ ±ÝÁöÇÒ °èȹÀÌ´Ù.
¡ß <stdio.h>¿Í <wchar.h>¿¡ vscanf() °è¿­ ÇÔ¼ö Ãß°¡[Lib][Open]
printf() °è¿­°ú scanf() °è¿­ ÇÔ¼öÀÇ Â÷À̸¦ ÁÙÀ̱â À§ÇØ vscanf() °è¿­ ÇÔ¼ö¸¦ Ç¥ÁØ ¶óÀ̺귯¸®¿¡ Ãß°¡Çß´Ù.

* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ ÀÚ¸ÅÁöÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.
µ¶ÀÚÀÇ°ß ³²±â±â (·Î±×ÀÎ ÈÄ µ¶ÀÚ ÀǰßÀ» ³²±â½Ç ¼ö ÀÖ½À´Ï´Ù.)
¾ÆÀ̵ð ºñ¹Ð¹øÈ£
 
 
?>
[Ã¥¼Ò°³]ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¨: »ý°¢À»...
[DDD ¨ç] µµ¸ÞÀÎ ÁÖµµ °³¹ß
À©µµ¿ìCE µð¹ö±ë¿¡ °üÇÑ 12°¡Áö...
°¡»óÈ­¿¡ ½ÇÆÐÇÏ´Â 10°¡Áö ÀÌÀ¯
'°¡»óÈ­ °ü¸®'¿¡ ´ëÇÑ 10°¡Áö ...
[±â°í]±×¸° ½ºÅ丮Áö·Î °¡´Â±æ
[Ã¥¼Ò°³] CentOS ¸®´ª½º ±¸...
ÄÚ´Ú ÄÞÆÑÆ® µðÄ«,'ÅÍÄ¡¼¾¼­'·Î ¹Ù²Ù´Ï¡¦À¯Àúµé "Àú¿ä! Àú¿ä!" [00:04:05]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
[Weekend TV]'½ºÅ¸Å©·¡ÇÁÆ®' ¼º´ë¸ð»çÀÇ ´ÞÀÎ [00:01:20]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
º¸¾È°­È­ ±¸±Û ¡°À©µµ ¹ö¸®°í À¥À¸...
¡®À©µµXP¡¯½Ã´ë Æó¸·, »ç¿ëÀÚ¿¡°Ô...
¡®³ªÈ¦·Î ¾×ƼºêX¡¯¡¦¼¼°è ÀÎÅͳݰú...
ÀÎÅÍ³Ý ¹ðÅ· ºê¶ó¿ìÀú´Â µû·Î ÀÖ´Ù...
SKT µ¶Á¡ 800MHz Á֯ļö,...
ÃÖÈÖ¿µ NHN ´ëÇ¥ ¡°°Ë»ö¾î ¼øÀ§...
KTF, ¼¶¸¶À» ¼øÈ¸ 'SHOW³ª...
LGÆÄ¿öÄÞ, ¿ì¼öÇõ½Å»ç·Ê °æÁø´ëȸ...
°øÁ¤À§ "Çϳª·ÎÅÚ, °³ÀÎÁ¤º¸ µµ¿ë...
Çϳª·ÎÅÚ·¹ÄÞ, ÇϳªÆ÷½º ǰÁúÆò°¡´Ü...
ÁøÈ­ÇÏ´Â ÀüÀÚÁöµµ¡¦Æ¯Çã Ãâ¿ø ´Ù¾ç...
 
 
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.