¿ù°£ Àα⠰Խù°

°Ô½Ã¹° 9°Ç
   
¸®´ª½º ȯ°æ¿¡¼­ÀÇ C ÇÁ·Î±×·¡¹Ö - 3Àå Start C
±Û¾´ÀÌ : ÃÖ°í°ü¸®ÀÚ ³¯Â¥ : 2009-11-30 (¿ù) 19:31 Á¶È¸ : 10880
±ÛÁÖ¼Ò :
                          

 
 
ÀÌ ¹®¼­´Â ¼öÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù. ÃֽŹ®¼­´Â Joinc Wiki¿¡¼­ È®ÀÎÇϼ¼¿ä.

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¸¦ ÃßõÇÏ´Â ÀÌÀ¯´Â ¿¡µðÅͷνáÀÇ ÇÊ¿äÇÑ ±â´É¸¸À» °¡Áö°í Àֱ⠶§¹®¿¡, ´Ù¸¥ ºÎ°¡ÀûÀÎ °Í¿¡ ½Å°æ¾²Áö ¾Ê¾Æµµ µÇ±â ¶§¹®ÀÌ´Ù. °Ô´Ù°¡ ¿ø°ÝÀ¸·Î ¿¬°áÇؼ­ »ç¿ëÇϱ⿡µµ ÀüÇô ¹®Á¦°¡ ¾ø´Ù - 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
#

ÇöÀç µð·ºÅ丮¿¡¼­ ¸í·ÉÀ» ãµµ·ÏÇϱâ À§Çؼ­ ./¸¦ ÀÌ¿ëÇß´Ù.

<scRIPT type=text/javascript> </scRIPT> <scRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </scRIPT> <IFRAME name=google_ads_frame marginWidth=0 marginHeight=0 src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-0339096251232740&dt=1192669717640&lmt=1192669717&prev_fmts=728x90_as&format=468x60_as&output=html&correlator=1192669717531&channel=8014010384&url=http%3A%2F%2Fteamblog.joinc.co.kr%2Fyundream%2F181&ad_type=text_image&ref=http%3A%2F%2Fteamblog.joinc.co.kr%2Fyundream%2F181&cc=100&ga_vid=377354234.1188889436&ga_sid=1192176615&ga_hid=1507035797&ga_fc=true&flash=9&u_h=1024&u_w=1280&u_ah=960&u_aw=1280&u_cd=32&u_tz=540&u_his=2&u_java=true" frameBorder=0 width=468 scrolling=no height=60 allowTransparency></IFRAME>

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 ÇÁ·Î±×·¥ ¿¹Á¦¸¦ ÅëÇؼ­, ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇؼ­ ½ÇÇàÆÄÀÏÀ» ¸¸µé°í À̸¦ ½ÇÇà½ÃÅ°´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¸¾Ò´Ù. ¿©±â¿¡¼­´Â ¾î¶°ÇÑ °úÁ¤À» °ÅÃļ­ ½ÇÇàÆÄÀÏÀÌ ¸¸µé¾îÁö´ÂÁö¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú´Ù.

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

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

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

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


À̸§ Æнº¿öµå
ºñ¹Ð±Û (üũÇÏ¸é ±Û¾´À̸¸ ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.)
¿ÞÂÊÀÇ ±ÛÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä.
   

 



 
»çÀÌÆ®¸í : ¸ðÁö¸®³× | ´ëÇ¥ : ÀÌ°æÇö | °³ÀÎÄ¿¹Â´ÏƼ : ·©Å°´åÄÄ ¿î¿µÃ¼Á¦(OS) | °æ±âµµ ¼º³²½Ã ºÐ´ç±¸ | ÀüÀÚ¿ìÆí : mojily°ñ¹ðÀÌchonnom.com Copyright ¨Ï www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.