Linux ȯ°æ¿¡¼­ÀÇ C ÇÁ·Î±×·¡¹Ö : 3Àå Start C
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 Start C
1.1 ÇÊ¿äÇÑ ¿ä¼Ò
1.2 °³¹ß ȯ°æ ¸¸µé±â
1.2.1 ¿¡µðÅÍ Áغñ
1.2.2 ÄÄÆÄÀÏ·¯ Áغñ
1.2.3 ù¹øÂ° C ÇÁ·Î±×·¥ÀÇ ÀÛ¼º
1.2.4 C ÇÁ·Î±×·¥ÀÇ ±¸Á¶
1.2.4.1 ÇÔ¼ö
1.2.4.2 main ÇÔ¼ö
1.2.4.3 include
1.2.4.4 ÁÖ¼®
1.3 C ÇÁ·Î±×·¥ÀÌ ¸¸µé¾îÁö´Â °úÁ¤


1 Start C

Linuxȯ°æÀÌ ´ë·« ±¸ÃàµÇ¾úÀ¸´Ï, ÀÌÁ¦ C¾ð¾î °³¹ßȯ°æÀ» ±¸ÃàÇØ º¸µµ·Ï ÇÏÀÚ. ´ëºÎºÐÀÇ Linux ¹èÆ÷ÆÇÀÌ ¼³Ä¡µÇ´Â Áï½Ã ¿ÏÀüÇÑ °³¹ßȯ°æÀ» ±¸ÃàÇØÁÙ Å×´Ï, º»¹®ÀÇ ³»¿ëÀ» Àаí È®ÀÎÇÏ´Â Á¤µµ¸é µÉ °ÍÀÌ´Ù. ¹°·Ð.. ¾î¶² ¸®´ª½º ¹èÆ÷ÆÇÀ» »ç¿ëÇϰí ÀÖ´øÁö °£¿¡, ÆÐŰÁö°ü¸® ÅøÁ¤µµ´Â ´Ù·ê ¼ö ÀÖÀ» Á¤µµ´Â µÇ¾î¾ß ÇÒ °ÍÀÌ´Ù.

1.1 ÇÊ¿äÇÑ ¿ä¼Ò

°³¹ßȯ°æÀ» À§Çؼ­´Â ÃÖ¼ÒÇÑ ¾Æ·¡ÀÇ ÅøµéÀÌ ÇÊ¿äÇÏ´Ù. ¾Æ·¡ÀÇ ÅøµéÀº ¿ÏÀüÈ÷ °ø°³µÇ¾úÀ¸¸ç GPLÀ» µû¸£´Â ¼ÒÇÁÆ®¿þ¾îµéÀÌ´Ù.
  1. ¿¡µðÅÍ : Äڵ带 ©·Á¸é ´ç¿¬È÷ ¿¡µðÅͰ¡ ÁغñµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.
  2. ÄÄÆÄÀÏ·¯ : C¾ð¾î¿¡ ÀÇÇØ¼­ Â¥¿©Áø ÄÚµå´Â Àΰ£ÀÌ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Â ÄÚµåÀÌ´Ù. ±â°è´Â ÀÌ Äڵ带 ÀÌÇØÇÒ ¼ö ¾øÀ¸¹Ç·Î, ±â°è°¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ±â°è¾î·Î º¯°æÇØÁà¾ß ÇÑ´Ù. ÄÄÆÄÀÏ·¯´Â Àΰ£ÀÌ ÀÎÁöÇÒ ¼ö ÀÖ´Â C·Î ÀÛ¼ºµÈ Äڵ带 ÄÄÇ»ÅͰ¡ ÀÎÁö ±â°è¾îµÈ ½ÇÇàÆÄÀÏ·Î ¸¸µé¾îÁØ´Ù. ¹ø¿ª±â¶ó°í »ý°¢ÇÏ¸é µÈ´Ù.

±âº»ÀûÀ¸·Î À§ÀÇ 2°³ÀÇ Åø¸¸ ¼³Ä¡µÇ¸é C¾ð¾î¸¦ ¹è¿ì´Âµ¥, ÀüÇô ¹®Á¦°¡ ¾ø´Ù. ±×·¯³ª C¾ð¾î¸¦ ÀÌ¿ëÇØ¼­ ±×·²µíÇÑ ÇÁ·Î±×·¥À» ¸¸µé·Á¸é ¸î°¡Áö ÅøµéÀÌ ´õ °®Ãß¾îÁø ȯ°æÀ» ¸¸µé Çʿ䰡 ÀÖ´Ù.
  1. µð¹ö°Å : C¾ð¾î°¡ ¾Æ¹«¸® Àΰ£ÀÌ ÀÌÇØÇϱ⠽±µµ·Ï ¸¸µé¾îÁ³´Ù°í´Â ÇÏÁö¸¸, ¿©ÀüÈ÷ ±â°è(ÄÄÇ»ÅÍ)ÀÇ ÀÔÀå¿¡¼­ »ý°¢À» ÇØ¾ß ÇÑ´Ù. ±×·¯´Ù º¸´Ï ¸¹Àº ½Ç¼ö°¡ »ý±æ ¼ö ¹Û¿¡ ¾ø´Ù. ¾î¶² ½Ç¼ö´Â ½±°Ô ã¾Æ³¾ ¼ö ÀÖÁö¸¸ ¾î¶² ½Ç¼ö´Â ã¾Æ³»±â ¸Å¿ì ¾î·Æ´Ù. µð¹ö°Å¸¦ ÀÌ¿ëÇϸé, À߸øµÈ ºÎºÐÀ» Á»´õ ½±°Ô ã¾Æ¼­ ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù.
  2. MakeÅø : ¾ÆÁÖ ÀÛÀº ÇÁ·Î±×·¥ÀÌ ¾Æ´Ñ ÀÌ»ó, °ü¸®³ª À¯Áöº¸¼öÀÇ ¸ñÀûÀ¸·Î ¿©·¯°³ÀÇ ÄÚµåÆÄÀÏ·Î ±¸¼ºÀÌ µÈ´Ù. make¸¦ ÀÌ¿ëÇϸé À̵é Äڵ带 Á»´õ ½±°Ô À¯ÁöÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÁ§Æ® °ü¸®¸¦ À§ÇÑ ÅøÀ̶ó°í º¸¸éµÈ´Ù.
  3. Çü»ó°ü¸®µµ±¸ : cvs, svnµîÀ¸·Î °øµ¿ÀÛ¾÷À» ÇÒ¶§, ÄÚµå ÆÄÀÏÀÌ ²¿ÀÌÁö ¾Êµµ·Ï µµ¿ÍÁÖ¸ç, ¹öÁ¯À» °ü¸®ÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ¿©±â¿¡¼­´Â Çü»ó°ü¸®Åø¿¡ ´ëÇØ¼­´Â ´Ù·çÁö ¾ÊÀ» °ÍÀÌ´Ù. ¾Æ¸¶µµ ²Ï Å« ±Ô¸ðÀÇ ÇÁ·ÎÁ§Æ®¸¦ ÇϱâÀü¿£ ÇÊ¿ä¾ø±ä ÇϰÚÁö¸¸, °ü½ÉÀÌ ÀÖ´Ù¸é ¸µÅ©¸¦ µû¶ó°¡¼­ Àо±â ¹Ù¶õ´Ù.

1.2 °³¹ß ȯ°æ ¸¸µé±â

1.2.1 ¿¡µðÅÍ Áغñ

kdevelopÀÇ °³¹ßÈ­¸é

Äڵ带 ¸¸µé·Á¸é ÀÏ´Ü ¿¡µðÅͰ¡ ÇÊ¿äÇÏ´Ù. Linux¿¡µµ ´Ù¾çÇÑ ¿¡µðÅͰ¡ ÁغñµÇ¾î Àִµ¥, °³ÀÎÀûÀ¸·Î vi³ª emacs¸¦ »ç¿ëÇÒ °ÍÀ» ±ÇÀåÇÑ´Ù. ÀÌµé ¿¡µðÅÍ´Â À©µµ¿ì »ç¿ëÀÚ¶ó¸é Àͼ÷ÇÏÁö ¾ÊÀº Å͹̳Πȯ°æÀ» °¡Áö°í ÀÖ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÀÌµé ¿¡µðÅÍ¿¡ ÀûÀÀÇϱⰡ °ï¶õÇÏ´Ù¸é, Àͼ÷ÇØÁö±â Àü±îÁö ¿ïÆ®¶ó¿¡µðÅÍ¿Í °°Àº kate¿Í Visual C++°ú °°Àº ÅëÇÕ°³¹ßȯ°æÀÎ kdevelopµîµµ Ȱ¿ëÇÒ ¼ö ÀÖ´Ù.

ƯÈ÷ kdevelop´Â ³ôÀº ¼öÁØÀÇ ÅëÇÕ°³¹ßȯ°æÀ» Á¦°øÇÑ´Ù. ±×·¯³ª kdevelop¸¦ Á¦´ë·Î »ç¿ëÇϱâ À§Çؼ­´Â, C¾ð¾î »Ó¸¸ ¾Æ´Ï¶ó, µð¹ö±ë, ÇÁ·ÎÁ§Æ®/Çü»ó°ü¸®¿¡ ´ëÇÑ ³»¿ëÀ» ¾Ë°í ÀÖ¾î¾ß Çϱ⠶§¹®¿¡ Áö±Ý ´Ù·çÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. Ȥ½Ã ÀÚ¹Ù¾ð¾î¸¦ »ç¿ëÇß´Ù¸é eclipse¿¡¼­ »ç¿ëÇÏ´ÉÇÑ CDT¶ó´Â C/C++°³¹ß ȯ°æµµ Á¦°øÇÑ´Ù. ¿ª½Ã ÀÚ¼¼È÷ ´Ù·çÁö´Â ¾ÊÀ» °ÍÀÌ´Ù.

¿©±â¿¡¼­´Â vi¸¦ »ç¿ëÇϵµ·Ï ÇÒ °ÍÀÌ´Ù. vi¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â ¿¡µðÅͷνáÀÇ ÇÊ¿äÇÑ ±â´É¸¸À» °¡Áö°í Àֱ⠶§¹®¿¡, ´Ù¸¥ ºÎ°¡ÀûÀÎ °Í¿¡ ½Å°æ¾²Áö ¾Ê°í ÇнÀ¿¡¸¸ ½Å°æ¾²¸é µÇ±â ¶§¹®ÀÌ´Ù. °Ô´Ù°¡ ¿ø°ÝÀ¸·Î ¿¬°áÇØ¼­ »ç¿ëÇϱ⿡µµ ÀüÇô ¹®Á¦°¡ ¾ø´Ù - GUI ¹æ½ÄÀÇ ¿¡µðÅͷεµ ¿ø°ÝÀÛ¾÷À» ÇÒ ¼ö ÀÖ±äÇÏÁö¸¸.. ÇÏÁö ¾Ê´À´Ï¸¸ ¸øÇÑ °æ¿ì°¡ ´ëºÎºÐÀÌ´Ù -. »ý¼ÒÇÑ ÀԷ¹æ½Ä ¶§¹®¿¡ óÀ½¿¡ ÀûÀÀÇϱ⠾ణ ±î´Ù·Ó°ÚÁö¸¸, ´« µü°¨°í Çѵνð£ Á¤µµ¸¸ ¿¬½À»ï¾Æ »ç¿ëÇØ º¸±â ¹Ù¶õ´Ù. ¾ó¸¶¾ÈµÇ¾î vi¸¶´Ï¾Æ°¡ µÇ¾î ÀÖ´Â ÀÚ½ÅÀ» ¹ß°ßÇÏ°Ô µÉ°ÍÀÌ´Ù.

1.2.2 ÄÄÆÄÀÏ·¯ Áغñ

ÄÄÆÄÀÏ·¯´Â Àΰ£ÀÇ ¾ð¾î¿¡ °¡±î¿î C·ÎµÈ Äڵ带 ¹ø¿ªÇؼ­ ±â°è¾î·Î ¸¸µé¾îÁÖ´Â ÀÏÀ» ÇÑ´Ù. ¿ì¸®°¡ ¸¸µç Äڵ带 ½ÇÇà°¡´ÉÇÑ ÇÁ·Î±×·¥À¸·Î ¸¸µé·Á¸é ¹Ýµå½Ã ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇØ¼­ ÄÄÆÄÀÏ °úÁ¤À» °ÅÃÄ¾ß ÇÑ´Ù. Linux¿¡´Â °­·ÂÇÑ gcc¶ó´Â ÄÄÆÄÀÏ·¯¸¦ Á¦°øÇÑ´Ù. gcc´Â GNU ÇÁ·ÎÁ§Æ®ÀÇ °á°ú¹°·Î ¿ÏÀüÈ÷ °ø°³µÇ¾î ÀÖÀ¸¸ç, ¸®´ª½º´Â ¹°·ÐÀÌ°í °ÅÀÇ ´ëºÎºÐÀÇ »ó¿ë À¯´Ð½º¿Í ¸Æ À©µµ¿ìÁî¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶§¶§·Î gccÀÇ ¼º´É¿¡ ´ëÇØ¼­ Àǹ®À» Ç¥Çϱ⵵ ÇÏ°í ½ÇÁ¦, ÇØ´ç º¥´õ°¡ Á¦°øÇÏ´Â Àü¿ëÀÇ ÄÄÆÄÀÏ·¯¿¡ ºñÇØ¼­ ¼º´ÉÀÌ ¶³¾îÁö±âµµ ÇÏÁö¸¸, ´ëºÎºÐÀÇ °æ¿ì »ç¿ëÇϴµ¥ ¹®Á¦°¡ ¾ø´Ù.

¾Æ¹¸µç ÀÌ ¹®¼­´Â gcc¸¦ ±âÁØÀ¸·Î ³»¿ëÀ» ä¿ö°¥ °ÍÀÌ´Ù. ¹öÁ¯Àº 3.x ÀÌ»óÀ¸·Î ÇϰڴÙ. ÃÖ±ÙÀÇ Linux¿¡ ¼³Ä¡µÈ gcc´Â ÃÖ¼Ò 3.x¿¡¼­ 4.x ¹öÁ¯ÀÌ´Ï »ç¿ëÇϴµ¥ Å« ¹®Á¦°¡ ¾øÀ» °ÍÀÌ´Ù. ¾Æ·¡¿Í °°Àº ¹æ¹ýÀ¸·Î gcc°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö È®ÀÎÇØ º¸µµ·Ï ÇÏÀÚ. ¸¸¾à gcc°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê´Ù¸é, ¹èÆ÷ÆÇ¿¡ ¸Â´Â ÆÐŰÁö °ü¸®ÀÚ¸¦ ÅëÇØ¼­ ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ¹æ¹ýÀº ¹èÆ÷ÆÇ¿¡ µû¶ó¼­ ´Ù¸£±â ¶§¹®¿¡ º°µµ·Î ¼³¸íÇÏÁö ¾Êµµ·Ï ÇϰڴÙ. ¸Þ´º¾óÀ» õõÈ÷ Àо±â ¹Ù¶õ´Ù.
# gcc --version 
gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5) 
Copyright (C) 2002 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions.  There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 

1.2.3 ù¹øÂ° C ÇÁ·Î±×·¥ÀÇ ÀÛ¼º

C ÇÁ·Î±×·¥À̶õ C¾ð¾î¸¦ ÀÌ¿ëÇØ¼­ ¸¸µé¾îÁø ÇÁ·Î±×·¥À» ¶æÇÑ´Ù.

±×·³ ù¹øÂ° ÇÁ·Î±×·¥À» ÀÛ¼ºÇغ¸µµ·Ï ÇÏÀÚ. À¯¸íÇÑ hello worldÇÁ·Î±×·¥À¸·Î, ½ÇÇà½Ã۸é È­¸é¿¡ hello world¸¦ Ãâ·ÂÇÏ´Â ÀÏÀ» ÇÑ´Ù. ¿¡µðÅÍ·Î ¾Æ·¡ÀÇ Äڵ带 ÀÔ·ÂÇØº¸ÀÚ. ÆÄÀÏÀ̸§Àº hello.c·Î ÇÏÀÚ.
#include <stdio.h> 
 
int main(int argc, char **argv) 
{ 
    printf("Hello World\n"); 
    return 0; 
} 
 

°£´ÜÈ÷ ¼³¸íÀ» Çϵµ·Ï ÇϰڴÙ. C¾ð¾î ÇнÀ¿¡ µé¾î°¡±âÀü¿¡ ¸Àº¸±â ½ÄÀ¸·Î ÇÏ´Â °Å´Ï, ÀÌÇØ°¡ ¾È°¡´õ¶óµµ ±×·¯·Á´Ï ÇÏ°í ³Ñ¾î°¡µµ·Ï ÇÏÀÚ. ¾îÂ÷ÇÇ ³ªÁß¿¡ ÀÚ¼¼È÷ ¾Ë¾Æº¸°Ô µÉ °ÍÀÌ´Ù.
  1. #include : ¿ÜºÎ ÇÔ¼ö¸¦ »ç¿ëÇϱâ À§Çؼ­ ÇÔ¼ö°¡ ¼±¾ðµÇ¾î ÀÖ´Â ÆÄÀÏÀ» Æ÷ÇÔ½Ãų·Á°í »ç¿ëÇÑ´Ù. stdio.h´Â Ç¥ÁØÀÔ·Â/Ç¥ÁØÃâ·Â/Ç¥ÁØ¿¡·¯¿Í °ü·ÃµÈ ÇÔ¼öµéÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù.
  2. main ÇÔ¼ö : ÇÁ·Î±×·¥ÀÇ º»¹®ÀÌ´Ù. ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ±â À§Çؼ­´Â ¹Ýµå½Ã ÇϳªÀÇ mainÇÔ¼ö°¡ Æ÷ÇԵǾî ÀÖ¾î¾ß ÇÑ´Ù.
  3. printf ÇÔ¼ö : Ç¥ÁØÃâ·ÂÀ»À§ÇÑ ÇÔ¼ö·Î "Hello World\n"¸¦ ¸ð´ÏÅÍ È­¸é¿¡ Ãâ·ÂÇÑ´Ù.
  4. return : ÇÔ¼öÀÇ °á°ú¸¦ ³Ñ°ÜÁÖ±â À§Çؼ­ »ç¿ëÇÑ´Ù.

ÀÌÁ¦ gcc ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇØ¼­ ½ÇÇà°¡´ÉÇÑ ÆÄÀÏ·Î ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ.
# gcc -o hello hello.c 
 
hello.c¸¦ ÄÄÆÄÀÏ ÇØ¼­ hello¶ó´Â ½ÇÇàÆÄÀÏ·Î ¸¸µé¾î¶ó´Â ¸í·ÉÀÌ´Ù. ÀÌÁ¦ hello¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÁÖ¾îÁø ÀÏÀ»ÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
# ./hello 
Hello World 
# 
 
ÇöÀç µð·ºÅ丮¿¡¼­ ¸í·ÉÀ» ãµµ·ÏÇϱâ À§Çؼ­ ./¸¦ ÀÌ¿ëÇß´Ù.

1.2.4 C ÇÁ·Î±×·¥ÀÇ ±¸Á¶

¸ðµç ÇÁ·Î±×·¥Àº ƯÀ¯ÀÇ ±¸Á¶¸¦ °¡Áö°Ô µÈ´Ù. ¾Õ Àý¿¡¼­ ¿¹·Î µé¾ú´ø hello.c¸¦ ÀÌ¿ëÇØ¼­ C ÇÁ·Î±×·¥ÀÇ ±¸Á¶¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.
  1. ÇÁ·Î±×·¥Àº Çϳª ÀÌ»óÀÇ ÇÔ¼ö·Î ÀÌ·ç¾îÁø´Ù.
  2. ¹Ýµå½Ã ÇϳªÀÇ mainÇÔ¼ö¸¦ Æ÷ÇÔÇØ¾ß ÇÑ´Ù.
  3. ÇÔ¼ö´Â ¼­·Î µ¶¸³ÀûÀÎ °ü°è¿¡ ÀÖ´Ù.
1.2.4.1 ÇÔ¼ö
ÇÔ¼ö´Â ÁÖ¾îÁø ÀÏÀ» ¼öÇàÇÏ´Â ÄÚµåÁ¶°¢À¸·Î °³³äÀûÀ¸·Î ¸Å¿ì °£´ÜÇÏ´Ù.
    ÀÔ·Â µ¥ÀÌÅÍ 
    +--\ /--------------+ 
    |                   | 
    |                   | 
    +-----------/ \-----+ 
             Ãâ·Â°á°ú 
 
À§ÀÇ À̹ÌÁö´Â ÇÔ¼öÀÇ °³³äÀ» ÀüÇüÀûÀ¸·Î ¼³¸íÇØÁÖ°í ÀÖ´Ù. ÀÌ¹Ì ÃʵîÇб³¶§ ¼Ò°³µÈ °³³äÀ̹ǷΠÇÔ¼ö¸¦ ÀÌÇØÇϴµ¥¿¡´Â ÀüÇô ¹®Á¦ ¾øÀ¸¸®¶ó »ý°¢µÈ´Ù.

ÇÔ¼ö´Â ¾î¶² µ¥ÀÌÅÍ ¼ÂÀ» Áý¾î ³ÖÀ¸¸é ÇÊ¿äÇÑ ¿¬»êÀ» ÇØ¼­ Ãâ·Â °á°ú¸¦ µÇµ¹·ÁÁØ´Ù. ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº ±¸Á¶¸¦ °¡Áø´Ù.
return type function_name(argument) 
{ 
   // ÄÚµå 
} 
 
  1. return type : Ãâ·Â µ¥ÀÌÅÍÀÇ Çü(type)¸¦ ÁöÁ¤ÇØ ÁØ´Ù.
  2. function_name : ÇÔ¼öÀÇ À̸§À¸·Î °¢ ÇÔ¼ö´Â À̸§À¸·Î ±¸ºÐµÇ¸ç, À̸§À¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
  3. argument(ÀÎÀÚ) : ÇÔ¼ö¿¡ ³Ñ°ÜÁö´Â °ªÀÌ´Ù.
  4. ÇÔ¼ö ÄÚµå : ÇÔ¼öÀÇ º»Ã¼ºÎºÐÀ¸·Î ÀÎÀÚ¸¦ ¹Þ¾Æ¼­ ¿¬»êÀ» ÇÏ°í °á°ú°ªÀ» µÇµ¹·ÁÁØ´Ù.
´ÙÀ½Àº µÎ°³ÀÇ ¼ýÀÚ¸¦ ÀԷ¹޾Ƽ­ ´õÇϱ⿬»êÀ» ÇÑ ÈÄ µÇµ¹·ÁÁÖ´Â °¡Àå °£´ÜÇÑ Çü½ÄÀÇ ÇÔ¼ö´Ù. °¡Àå °£´ÜÇÑ ÇÔ¼öÀ̱ä ÇÏÁö¸¸ ¸ðµç ÇÔ¼ö´Â °á±¹ ¾Æ·¡ÀÇ ¿¹¿Í µ¿ÀÏÇÑ ±¸Á¶¸¦ °¡Áø´Ù.
int plus(int a, int b)  
{ 
    return a+b; 
} 
 

ÇϳªÀÇ ÇÁ·Î±×·¥Àº Çϳª ÀÌ»óÀÇ ÇÔ¼ö·Î ±¸¼ºµÇ¾îÀÖ´Ù. ÀÌ ÇÔ¼öµéÀº ÀԷ°ª°ú Ãâ·ÂÀÇ Çü½ÄÀ¸·Î ´Ù¸¥ ÇÔ¼öµé¿¡°Ô °ªÀ» ³Ñ±â´Â ½ÄÀÇ µ¥ÀÌÅÍÀÇ È帧À¸·Î ÁÖ¾îÁø ÀÏÀ» ¼öÇàÇÑ´Ù. ºÐ¾÷È­µÈ ÄÁÅ×ÀÌ³Ê º§Æ®¸¦ »ý°¢ÇÏ¸é µÉ°Å °°´Ù.

function.png
1.2.4.2 main ÇÔ¼ö
main ÇÔ¼ö´Â Ưº°ÇÑ Á¾·ùÀÇ ÇÔ¼öÀ̸ç, ÇÁ·Î±×·¥ÀÌ ½ÃÀ۵Ǵ ÁöÁ¡ÀÌ´Ù. ¸ðµç C ÇÁ·Î±×·¥Àº ¹Ýµå½Ã ÇϳªÀÇ main ÇÔ¼ö¸¦ Æ÷ÇÔÇϰí ÀÖ¾î¾ß¸¸ ÇÑ´Ù. ´Ù¸¥ ÇÔ¼ö¿Í ¸¶Âù°¡Áö·Î return type, function name, argumentÀÇ 3¿ä¼Ò·Î ÀÌ·ç¾îÁ® ÀÖ´Ù.

function2.png

´ÙÀ½Àº µ¡¼À¿¬»êÀ» ÇÏ´Â sumÀ̶ó´Â ÇÔ¼ö¸¦ Æ÷ÇÔÇÑ ÇÁ·Î±×·¥ÀÌ´Ù.

#include <stdio.h> 
 
int sum(int a, int b) 
{ 
    return a+b; 
} 
int main(int argc, char **argv) 
{ 
    int result; 
    result = sum(4, 5); 
    return result; 
} 
 
¿ÏÀüÇÑ ÇÁ·Î±×·¥ÀÌ µÇ±â À§Çؼ­ ÇϳªÀÇ mainÇÔ¼ö¸¦ °¡Áö°í ÀÖÀ¸¸ç, mainÇÔ¼ö´Â ³»ºÎ¿¡¼­ sumÀ̶ó´Â ÇÔ¼ö¸¦ È£ÃâÇØ¼­ 4¿Í 5¸¦ ´õÇÏ°í °á°ú°ªÀ» ¸®ÅÏÇϰí ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù. ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ¾úÀ¸¸é ¾î¶»°Ô ¸®ÅϰªÀ» È®ÀÎÇÒ ¼ö ÀÖÀ»±î ? ´ÙÀ½°ú °°ÀÌ ½©¿¡¼­ È®ÀÎ °¡´ÉÇÏ´Ù.
# ./sum 
# echo $? 
9 
 
echo(1)´Â È­¸é¿¡ Ãâ·ÂÀ» Çϱâ À§Çؼ­ »ç¿ëÇÏ´Â ½©³»ºÎ¸í·É¾îÀÌ´Ù. $?´Â °¡Àå ÃÖ±Ù ½ÇÇà½ÃŲ ÇÁ·Î±×·¥ÀÌ ¸®ÅÏÇÑ °ªÀÌ ÀúÀåµÇ´Â ½©ÀÇ Æ¯º°ÇÑ º¯¼ö´Ù. ¾î¶»°Ô ÀÌ·±ÀÏÀÌ °¡´ÉÇÑÁö´Â ¾ÆÁ÷Àº ¸ô¶óµµ µÈ´Ù. Â÷Â÷ ¾Ë¾Æ³ª°¡°Ô µÉ °ÍÀÌ´Ù.

1.2.4.3 include

1.2.4.4 ÁÖ¼®
ÁÖ¼®Àº ºÎ°¡ÀûÀÎ Á¤º¸¸¦ ¾Ë·ÁÁÖ±â À§Çؼ­ »ç¿ëµÇ´Â C¾ð¾îÀÇ ¿ä¼Ò´Ù. C¾ð¾î°¡ Àΰ£ÀÇ ¾ð¾î¿Í »ó´çÈ÷ À¯»çÇϱä ÇÏÁö¸¸, ¿©ÀüÈ÷ ÀÌÇØÇϱâ Èûµç¸éÀÌ ÀÖ´Ù. ±×·¯´Ù º¸´Ï ´Ù¸¥ »ç¶÷ÀÌ Äڵ带 ÀÌÇØÇϱâ Èûµé¸ç, ½ÉÁö¾î ÇÁ·Î±×·¥À» ¸¸µç ´ç»çÀÚ Á¶Â÷µµ, ½Ã°£ÀÌ Áö³ª¸é ¿Ö ÀÌÄڵ带 ÀÛ¼ºÇß´ÂÁö Àؾî¹ö¸®´Â °æ¿ì°¡ »ý±ä´Ù. ÀÌ´Â ÇÁ·Î±×·¥ÀÇ À¯Áöº¸¼ö¸¦ Èûµé°Ô ¸¸µå´Â ¿äÀÎÀÌ µÈ´Ù.

ÁÖ¼®À» »ç¿ëÇϸé ÀÌÇØÇϱ⠽¬¿î Äڵ带 ¸¸µé ¼ö ÀÖ´Ù. ƯÈ÷ ¿©·¯¸í°ú Çù·ÂÇØ¼­ ÀÛ¾÷ÇØ¾ß ÇÒ°æ¿ì ÁÖ¼®Àº ÇʼöÀûÀÎ ¿ä¼Ò´Ù. ´ç¿¬ÇÏÁö¸¸ ÁÖ¼®Àº ±â°è¾î·Î ¹ø¿ªÀÌ µÇÁö ¾Ê´Â´Ù. ´ÙÀ½Àº ÁÖ¼®ÀÇ ¿¹ÀÌ´Ù.
#include <stdio.h> 
 
/* 
 * ¸¸µç»ç¶÷ : yundream 
 * ÇÏ´ÂÀÏ : µÎ°³ÀÇ ÀÎÀÚ¸¦ ´õÇÑ °á°ú¸¦ ¸®ÅÏÇÑ´Ù. 
 * ÀÎÀÚ : int a, int b 
 */ 
int sum(int a, int b) 
{ 
    return a+b; 
} 
 
// Main ÇÔ¼ö ½ÃÀÛ  
int main(int argc, char **argv) 
{ 
    int result; 
    result = sum(4, 5); // µÎ°³ÀÇ ÀÎÀÚ¸¦ ´õÇÑ´Ù. 
    return result; 
} 
 
ÁÖ¼®Àº "/* */"°ú "//" µÎ°³¸¦ ÀÌ¿ëÇØ¼­ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. "/* */"´Â ºí·°´ÜÀ§ÀÇ ÁÖ¼®À» ¸¸µé±â À§Çؼ­ »ç¿ëÇϸç, //´Â ¶óÀδÜÀ§ÀÇ ÁÖ¼®À» ¸¸µé±â À§Çؼ­ »ç¿ëÇÑ´Ù. ÇÔ¼ö Àüü¿¡ ´ëÇÑ »ó¼¼¼³¸íµîÀº /* */¸¦ ÄÚµå Áß°£Áß°£ °£´ÜÇÑ ¼³¸íÀ» À§Çؼ­ //¸¦ »ç¿ëÇÑ´Ù.


1.3 C ÇÁ·Î±×·¥ÀÌ ¸¸µé¾îÁö´Â °úÁ¤

Àΰ£ÀÌ ÀÌÇØÇϱ⠽¬¿î C¾ð¾î¸¦ ÀÌ¿ëÇØ¼­ ÇÁ·Î±×·¥À» ¸¸µé¾ú´Ù¸é, À̸¦ ÄÄÇ»ÅͰ¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ±â°è¾î ÆÄÀÏ·Î ¹ø¿ªÇؼ­ ÄÄÇ»ÅͰ¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ½ÇÇàÆÄÀÏÀÇ ÇüÅ·Π¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÏÀ» ÇÏ´Â ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ·¯¶ó°í ÇÑ´Ù. ÀÌ¹Ì ¿ì¸®´Â hello world ÇÁ·Î±×·¥ ¿¹Á¦¸¦ ÅëÇØ¼­, ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇØ¼­ ½ÇÇàÆÄÀÏÀ» ¸¸µé°í À̸¦ ½ÇÇà½ÃŰ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸¾Ò´Ù. ¿©±â¿¡¼­´Â ¾î¶°ÇÑ °úÁ¤À» °ÅÃļ­ ½ÇÇàÆÄÀÏÀÌ ¸¸µé¾îÁö´ÂÁö¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.

  1. ¼Ò½º ÄÚµå »ý¼º
    Àΰ£ÀÌ ÀÌÇØÇÒ ¼ö ÀÖ´Â ¾ð¾î·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù. À̰ÍÀ» ¼Ò½ºÄÚµå¶ó°í Çϴµ¥, ¿©±â¿¡´Â ÄÄÇ»ÅÍ¿¡°Ô ³»¸± ¸í·ÉµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù. ¼Ò½ºÄÚµå´Â Àΰ£ÀÌ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÁö¸¸, ÄÄÇ»ÅÍ´Â ÀÌÇØÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ÄÄÇ»ÅͰ¡ ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ¹ø¿ªÇÏ´Â °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.

  2. Pre processor
    ÄÄÆÄÀÏ·¯¸¦ ½ÇÇà½ÃŰ¸é °¡Àå ¸ÕÀú pre compile¸¦ ¼öÇàÇÑ´Ù. ÇÁ·Î±×·¡¸Ó°¡ »ý¼ºÇÑ ¼Ò½ºÄÚµå´Â Àΰ£ÀÌ º¸´Ù ½±°Ô ÀÐÀ» ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­ include³ª ¸ÅÅ©·ÎµîÀ» ÀÌ¿ëÇØ¼­ Äڵ尡 Ãà¾àµÇ¾î ÀÖ´Ù. pre compile´Â Ãà¾àµÈ ³»¿ëÀ» ÄÄÆÄÀÏ·¯°¡ ½±°Ô ÇØ¼®ÇÒ ¼ö ÀÖµµ·Ï Ç®¾î¾²´Â °úÁ¤ÀÌ´Ù.

  3. Assembly ÄÚµåÀÇ »ý¼º
    ÀÌÁ¦ Ç®¾î¾´ Äڵ带 °¡Àå ¿ø½ÃÀûÀÎ ¾ð¾îÀÇ ÇüÅÂÀÎ AssemblyÄÚµå·Î ¸¸µé¾îÁØ´Ù. ¾î¼Àºí¸®ÄÚµå´Â ±â°è¾î¿Í 1:1·Î ´ëÀÀµÇ±â ¶§¹®¿¡ ÀÏ´Ü ¾î¼Àºí¸®ÄÚµå·Î ¼º°øÀûÀ¸·Î ¸¸µé¾î³½´Ù¸é ½±°Ô ±â°è¾îÇüÅ·Πº¯È¯ÇÒ ¼ö ÀÖ´Ù.

  4. Object ÆÄÀÏÀÇ »ý¼º
    Assembly Äڵ尡 ¸¸µé¾îÁ³´Ù¸é, ÀÌÁ¦ ÀÌ°É ±â°è¾î·Î º¯È¯ÇÑ´Ù. ÀÌ·¸°Ô ÇØ¼­ ¸¸µé¾îÁø ÆÄÀÏÀ» objectÆÄÀÏÀ̶ó°í ÇÑ´Ù.

  5. linker
    ±×·¯³ª objectÆÄÀÏÀÌ »ý°å´Ù°í ¹Ù·Î ½ÇÇàµÉ ¼ö ÀÖ´Â°Ô ¾Æ´Ï´Ù. ÇÁ·Î±×·¥À¸·Î½á ½ÇÇàÇϱâ À§Çؼ­´Â ¿î¿µÃ¼Á¦°¡ Á¦°øÇÏ´Â ´Ù¸¥ ¿©·¯°¡Áö °´Ã¼(±â´É)µé°ú ¿¬°á(link)µÇ¾î¾ß ÇÑ´Ù. link°úÁ¤À» °ÅÄ¡¸é ºñ·Î¼­ ½ÇÇà°¡´ÉÇÑ ¿ÏÀüÇÑ ÇÁ·Î±×·¥ÀÌ ¸¸µé¾îÁö°Ô µÈ´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.