¥¹. Àü󸮱â(PREPROCESSOR) C ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÒ ¶§´Â ´ÙÀ½°ú °°ÀÌ ¿©·¯ ´Ü°è¸¦ °ÅÄ¡°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ +-------------+ +-------------+ +--------------+ ¦¢ ¦¢ | Àü󸮱â | ¡æ | C ÄÄÆÄÀÏ·¯ | ¡æ | ¸µÄ¿ | ¡æ ¼öÇà È­ÀÏ(.exe) ¦¢ ¦¢ +-------------+ +-------------+ +--------------+ ¦¢ ¦¢ C ÇÁ·Î±×·¥(.c) Àüó¸®µÈ C È­ÀÏ ¸ñÀû ÇÁ·Î±×·¥(.obj) ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Àü󸮱â´Â ÅؽºÆ®¸¦ ÅؽºÆ®·Î º¯È¯ÇÏ´Â ¼ø¼øÇÑ ÅؽºÆ® 󸮱â·Î C ÇÁ·Î±×·¥À» ¹Þ¾Æ C ÇÁ·Î±× ·¥À» °á°ú·Î »êÃâÇÑ´Ù. ÀÌ Àü󸮱Ⱑ ÇÏ´Â ÀÏÀº °íÁ¤µÇ¾î Àִµ¥, À̸¥¹Ù ÇÁ¸®ÇÁ·Î¼¼¼­¹®À̶ó°í ºÒ¸®´Â ¹®ÀåµéÀ» ó¸®ÇÏ´Â ¿ªÇÒÀ» Çϸç, ¶ÇÇÑ ÁÖ¼®(comment)À» Áö¿ì´Â ¿ªÇÒµµ ÇÏ°í ÀÖ´Ù. µû¶ó¼­ C ÄÄÆÄÀÏ·¯´Â ÁÖ¼®ÀÌ ÀÖ¾ú´ÂÁö Á¶Â÷ ¾ËÁö ¸øÇϸç ÁÖ¼®ÀÌ ¾ø´Â ¼ø¼öÇÑ C ÇÁ·Î±×·¥À» Àü´ÞÇÏ°Ô µÈ ´Ù. ±×¸®°í ÇÁ¸®ÇÁ·Î¼¼¼­¹®Àº Àü󸮱Ⱑ ó¸®ÇÏ´Â ¹®ÀåÀ̱⠶§¹®¿¡ CÀÇ ¹®Àå°ú´Â ´Ù¸¥ ÇüÅ·ΠµÇ¾î ÀÖÀ¸¸ç, ¹Ýµå½Ã '#'À¸·Î ½ÃÀÛÇϵµ·Ï µÇ¾î ÀÖ´Ù. UnixÀÇ °æ¿ì¿¡´Â ÀÌ '#'ÀÌ ¹Ýµå½Ã ù ¿­¿¡ ¿Àµµ·Ï µÇ¾î ÀÖÀ¸³ª MSC³ª TCÀÇ °æ¿ì¿¡´Â Áß°£¿¡ ¿Íµµ µÇ¸ç '#' ´ÙÀ½¿¡´Â ´ÙÀ½°ú °°Àº ¹Ì¸® Á¤ÇØÁø ¹®ÀåµéÀÌ ¿Ã ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ define, undef, include, if, ifdef, ifndef, elif, else, endif, line, error, pragma ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Àü󸮱â´Â ÅؽºÆ® 󸮱âÀ̱⠶§¹®¿¡ ÇÁ¸®ÇÁ·Î¼¼¼­¹®Àº ÇÁ·Î±×·¥ÀÇ ¾î´À ºÎºÐ¿¡³ª ¿Ã ¼ö ÀÖ´Ù. ÇÁ¸®ÇÁ·Î¼¼¼­¹®Àº ÀÚ½ÅÀÌ ÀÖ´Â À§Ä¡ºÎÅÍ ±× È­ÀÏÀÇ ³¡±îÁö¸¸ È¿·ÂÀ» ¹ß»ýÇÑ´Ù. µû¶ó¼­ ÇÁ·Î±×·¥ ÀÌ ¿©·¯ °³ÀÇ È­ÀÏ·Î ³ª´µ¾îÁ® ÀÖ´Â °æ¿ì¿¡´Â °¢ È­Àϸ¶´Ù °°Àº ÇÁ¸®ÇÁ·Î¼¼¼­¹®À» »ç¿ëÇÏ¿©¾ß ÇÏ ´Â °æ¿ì°¡ ¸¹À¸¸ç, ÀÌ °æ¿ì ´ÙÀ½¿¡ ³ª¿Ã Çì´õ È­ÀÏÀÌ ¸Å¿ì À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù. < #define ¹® > Á¦ÀÏ Ã³À½¿¡ ³ª¿À´Â °ÍÀÌ ¹Ù·Î #define ¹®Àε¥ ÀÌ´Â ´ÙÀ½°ú °°ÀÌ µÎ °¡ÁöÀÇ ÇüÅ·Π»ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ ©ç #define À̸§ ÀÇ¹Ì ¦¢ ¦¢ ©è #define À̸§(¸Å°³º¯¼ö) ÀÇ¹Ì /* ¸ÅÅ©·Î ÇÔ¼ö */ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ©çÀº ¿ø·¡´Â ¿À¸¥ÂÊÀÇ Àǹ̷Π»ç¿ëÇÏ¿©¾ß ÇÒ °ÍÀ» ´ë½Å ¾ÕÀÇ À̸§À¸·Î »ç¿ëÇÏ°Ú´Ù´Â ¶æÀÌ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ °æ¿ì. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define PI 3.141592 ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Àü󸮱â´Â ÀÌ ´ÙÀ½ºÎÅÍ ³ªÅ¸³ª´Â ¸ðµç PI¸¦ 3.141592·Î ¹Ù²Ù°Ô µÈ´Ù. µû¶ó¼­ »ç¿ëÀÚ´Â 3.141592 ´ë½Å¿¡ PI¶ó°í »ç¿ëÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ l = 2.0 * PI * r; ¦¢ ¦¢ a = PI * r * r; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Àü󸮱â´Â À̸¦ ó¸®ÇÏ¿© ´ÙÀ½°ú °°ÀÌ ¹Ù²Ù¾î C ÄÄÆÄÀÏ·¯¿¡°Ô Àü´ÞÇϱ⠶§¹®¿¡ ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ l = 2.0 * 3.141592 * r; ¦¢ ¦¢ a = 3.141592 * r * r; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ÄÄÆÄÀÏ·¯´Â PI¶ó´Â °ª¿¡ ´ëÇؼ­ ¾Ë Áö ¸øÇÏ°Ô µÈ´Ù. µû¶ó¼­ PI´Â 3.141592¸¦ ´ë½ÅÇÑ ÇϳªÀÇ »ó¼ö ¶ó º¼ ¼ö ÀÖÀ¸¸ç, ¼ýÀÚ°¡ ¾Æ´Ñ ±âÈ£ ÇüÅ·ΠµÇ¾î Àֱ⠶§¹®¿¡ À̸¦ ±âÈ£ »ó¼ö¶ó°í ºÎ¸¥´Ù. ¹Ý¸é¿¡ ½ºÆ®¸µ ¾ÈÀ̳ª À̸§ ¾È¿¡ ÀÖ´Â °ÍÀº ġȯµÇÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù°í ÇÒ ¶§. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define MSG "Hello!" ¦¢ ¦¢ main() { ¦¢ ¦¢ printf("MSG"); ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ MSG´Â ½ºÆ®¸µ ³»¿¡ Àֱ⠶§¹®¿¡ Àü󸮱⿡ ÀÇÇØ Ä¡È¯µÇÁö ¾Ê´Â´Ù. ±âÈ£ »ó¼ö¸¦ Á¤ÀÇÇÒ ¶§ ÀÌ¹Ì ¾Õ¿¡¼­ Á¤ÀÇÇÑ »ó¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define TWO 2 ¦¢ ¦¢ #define FOUR TWO*TWO ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À̶§ x = FOUR;·Î »ç¿ëÇϸé ÀÌ´Â Àü󸮱⿡ ÀÇÇØ x = 2*2;·Î ¹Ù²î°Ô µÈ´Ù. À̹ۿ¡µµ #define¸í·ÉÀº »ç¿ëÀÚ°¡ ±â¾ïÇϱâ Èûµç ¼öÄ¡³ª µ¥ÀÌÅ͵éÀ» ¾Ë¾Æº¸±â ½±°Ô ³ªÅ¸³¾ ¶§¿¡ µµ »ç¿ëÇÑ´Ù. ´ÙÀ½Àº ÀÌ°ÍÀÇ ÇÑ ¿¹ÀÌ´Ù. #include #include #define ESC 27 #define ENTER 13 #define UP 72 #define DOWN 80 #define LEFT 75 #define RIGHT 77 void main(void) { char ch; int old_x, old_y, x, y; old_x = x = 40; old_y = y = 12; clrscr(); while (1) { /* +---------------------+ */ ch = getch(); /* ASCII +---------+-----+---+ */ if (!ch) { /* | ¨è SCAN |¨ç ASCII | ¡ç ch */ ch = getch(); /* SCAN +-----+---+---------+ (2byte) */ old_x = x; /* +-----------+ */ old_y = y; switch (ch) { case UP : y = (y <= 1) ? 23 : y - 1; break; case DOWN : y = (y >= 23) ? 1 : y + 1; break; case LEFT : x = (x <= 1) ? 78 : x - 1; break; case RIGHT: x = (x >= 78) ? 1 : x + 1; break; } gotoxy(x,y); putchar('*'); gotoxy(old_x,old_y); putchar(' '); } else switch (ch) { case ESC : case ENTER: return; } } } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- À§ ÇÁ·Î±×·¥ÀÇ ½ÇÇà °á°ú´Â ¾Æ·¡ ¼³¸í°ú °°´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ UP key : * ¸¦ À§·Î ÁøÇà½ÃŲ´Ù. ¦¢ ¦¢ DOWN key : '*'¸¦ ¾Æ·¡·Î ÁøÇà½ÃŲ´Ù. ¦¢ ¦¢ LEFT key : '*'¸¦ ¿ÞÂÊÀ¸·Î ÁøÇà½ÃŲ´Ù. ¦¢ ¦¢ RIGHT key : '*'¸¦ ¿À¸¥ÂÊÀ¸·Î ÁøÇà½ÃŲ´Ù. ¦¢ ¦¢ ESC, ENTER : ÇÁ·Î±×·¥À» Áß´ÜÇÑ´Ù. ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ < ¸ÅÅ©·Î ÇÔ¼ö > ©è´Â ¸ÅÅ©·Î(macro)¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ´Ù. ¸ÅÅ©·Î´Â ÇÔ¼ö¿Í À¯»çÇѵ¥, ´ÙÀ½ ±×¸²Àº ¸ÅÅ©·Î ÇÔ¼öÀÇ ¼±¾ð ¹æ¹ýÀ» ¼³¸íÇÑ °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define SQ(x) ((x) * (x)) ¦¢ ¦¢ | | -----+----- ¦¢ ¦¢ | | +---------- Çü½Ä ÀÎÀÚ ¾çÂÊ¿¡´Â °ýÈ£¸¦ ÃÄÁÖ´Â °ÍÀÌ ÁÁ´Ù ¦¢ ¦¢ | +------------------ Çü½Ä ÀÎÀÚ ¦¢ ¦¢ +--------------------- ¸ÅÅ©·Î ÇÔ¼öÀ̸§(ÇÔ¼ö À̸§°ú µÚ¿¡¿À´Â °ýÈ£¿¡ °ø¹éÀ» ¦¢ ¦¢ µÎ¾î¼­´Â ¾ÈµÈ´Ù) ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¸ÅÅ©·Î ÇÔ¼ö¶ó°í Çؼ­ Ưº°ÇÑ °ÍÀº ¾Æ´Ï´Ù. ´ÜÁö #define¹®À» »ç¿ëÇÏ¿© ÇÔ¼ö¿Í °°Àº È¿°ú¸¦ °ÅµÐ °Í¿¡ ºÒ°úÇÏ´Ù. ´ÙÀ½Àº À§ ¿¹°¡ ÇÁ·Î±×·¥»ó¿¡¼­ ¾î¶»°Ô »ç¿ëµÇ´Â°¡¸¦ º¸¿©ÁÖ´Â °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ x = SQ(3) -----------> x = ((3)*(3)) ¦¢ ¦¢ y = SQ(9) -----------> y = ((9)*(9)) ¦¢ ¦¢ z = SQ(a) -----------> z = ((a)*(a)) ¦¢ ¦¢ Á¦°öÇÑ °ªÀ» µÇµ¹¸°´Ù Àü󸮱⸦ Åë°úÇÑ ÈÄ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¸ÅÅ©·Î ÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§ ÇÑ °¡Áö ÁÖÀÇÇÒ Á¡ÀÌ Àִµ¥, ¹Ù·Î ÇÔ¼öºÎºÐÀÇ º¯¼ö 'x'¿¡ °ýÈ£¸¦ Ä£ °ÍÀÌ´Ù. ¸¸¾à °ýÈ£¸¦ ¾ø¾Ö°í ÇÁ·Î±×·¥À» ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ À߸øµÈ °á°ú°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define SQ(x) (x * x) ¦¢ ¦¢ [ SQ() ¸¦ »ç¿ëÇÑ ¿¹ ] -------------------------------------------------------------- ¦¢ ¦¢ ¦¢ ¦¢ x = SQ(3) ----------> x = (3 * 3); /* ´ä : 9 */ ¦¢ ¦¢ y = SQ(4 + 5) ----------> x = (4 + 5 * 4 + 5); /* ´ä : 29 */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ »ç¿ë¿¹ ºÎºÐÀ» º¸¸é ù¹ø° °æ¿ì´Â °á°ú°¡ Á¤»óÀûÀ¸·Î ³ª¿ÀÁö¸¸ µÎ¹ø° °æ¿ì¿¡¼­´Â ¿øÇÏ´Â °ªÀÌ ³ª¿ÀÁö ¾Ê°í ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. Áï 9ÀÇ Á¦°öÇÑ °ª '81'À» ¿øÇߴµ¥ °á°ú´Â °öÇϱâÀÇ ¿¬»ê ¿ì¼±¼ø À§ ¶§¹®¿¡ ´äÀÌ '29'°¡ ³ª¿ÈÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¿À·ù¸¦ ¸·±â À§Çؼ­ ¸ÅÅ©·Î ÇÔ¼öÀÇ Çü½Ä ÀÎÀÚ ¾çÂÊ¿¡´Â °ýÈ£¸¦ ¹Ýµå½Ã ÇØ ÁÖ¾î¾ß ÇÏ´Â °ÍÀÌ ¿øÄ¢À¸·Î µÇ¾î ÀÖ´Ù. ´ÙÀ½Àº #define¹®À» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÇ ÇÑ ¿¹ÀÌ´Ù. #include #define MAX 100 #define MIN 10 #define FALSE 0 #define max(x,y) (((x) > (y)) ? (x) : (y)) #define min(x,y) (((x) < (y)) ? (x) : (y)) #define NL '\n' #define SPACE ' ' #define TAB '\t' #define TABNO 8 #define PR(x) printf("%d\n",x); #define PRC(x) printf("%c\n",x); #define tab(x,n) for(x = 0; x < n; x++) putchar(SPACE); /* ¸ÅÅ©·Î´Â µ¥ÀÌÅÍ À¯Çü¿¡ ½Å°æ ¾µ ÇÊ¿ä°¡ ¾ø°í ¿©·¯ µ¥ÀÌÅÍ À¯Çü¿¡ ´Ù »ç¿ëÇÒ ¼ö ÀÖ´Ù */ void main() { static char ca[] = "This\tis\tstring.\n"; char *cp = ca; int i = MAX; int j = MIN; if (max(i-j,j) > min(i+j,i)) ++i; else --j; PR(i) PR(j) while (*cp != FALSE) { if (*cp == TAB) tab(i,TABNO) else if (*cp == NL) break; else PRC(*cp); ++cp; } } À§ ÇÁ·Î±×·¥¿¡¼­ ¸ðµç ±âÈ£ »ó¼ö¿Í ¸ÅÅ©·Î¸¦ ´Ù ¾ø¾Ö°í ¿ø·¡ÀÇ Àǹ̴ë·Î º¯È¯ÇÏ¸é ´ÙÀ½°ú °°ÀÌ µÈ´Ù. #include void main() { static char ca[] = "This\tis\tstring.\n"; char *cp = ca; int i = 100; int j = 10; if ((((i - j) > (j)) ? (i - j) : (j)) > (((i + j) < (i)) ? (i + j) : (i))) ++i; else --j; printf("%d\n",i); printf("%d\n",j); while (*cp != 0) { if (*cp == '\t') for (i = 0; i < 8; i++) putchar(' '); else if (*cp == '\n') break; else printf("%c\n",*cp); ++cp; } } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- 100 9 T h i s i s s t r i n g . ¸ÅÅ©·Î ÇÔ¼ö¸¦ »ç¿ëÇÔÀ¸·Î½á »ý±â´Â ÀÌÁ¡Àº »øÇà¼Óµµ°¡ »¡¶óÁø´Ù´Â °ÍÀÌ´Ù. ÀÌÀ¯´Â, ÀÏ¹Ý ÇÔ¼öÀÇ °æ¿ì ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ½Ã°£ÀÌ °É¸®´Âµ¥ ¹ÝÇØ ¸ÅÅ©·Î ÇÔ¼ö´Â »ç½Ç ÇÔ¼ö°¡ ¾Æ´Ï±â ¶§¹®¿¡ ÇÔ¼ö È£ Ã⠽ð£ÀÌ ¼Ò¸ðµÇÁö ¾Ê´Â´Ù(¸ÅÅ©·Î ÇÔ¼ö´Â ÇÔ¼öó·³ º¸ÀÏ »ÓÀÌÁö »ç½ÇÀº ¿¬¼ÓÀûÀÎ ÇÁ·Î±×·¥ÀÏ »Ó ÀÌ´Ù). ¡Ø SWAP ÇÔ¼ö SWAPÀ̶õ ¹Ù²Û´Ù´Â ¶æÀ¸·Î µÎ °³ÀÇ º¯¼ö °ªÀ» ¹Ù²Ü ¶§ »ç¿ëÇÏ´Â ÇÔ¼öÀÇ À̸§À¸·Î ¸¹ÀÌ ¾²ÀδÙ. µÎ º¯¼öÀÇ °ªÀ» ¹Ù²Ü¶§´Â º¸Åë ÇÔ¼ö¾È¿¡ ´ÙÀ½°ú °°ÀÌ ÀϽÃÀû º¯¼ö¸¦ ¸¸µé¾î ÇÑ º¯¼öÀÇ °ªÀÌ ¾ø ¾îÁöÁö ¾Êµµ·Ï º¸°üÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ void swap(int *a, int *b) { ¦¢ ¦¢ int temp; ¦¢ ¦¢ temp = *a; ¦¢ ¦¢ *a = *b; ¦¢ ¦¢ *b = temp; ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§ ÇÔ¼ö´Â µÎ °³ÀÇ Á¤¼ö Æ÷ÀÎÅ͸¦ ¹Þ¾Æ ±× °ªÀ» ¹Ù²Ù¾î ÁÖ´Â ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼öÀÇ ´ÜÁ¡Àº Áö¿ª º¯¼ö temp¸¦ »ç¿ëÇÑ´Ù´Â Á¡°ú ´ÜÁö µÎ °³ÀÇ º¯¼ö°ªÀ» ¹Ù²Ù±â À§ÇØ ÇÔ¼ö È£ÃâÀ» ÇؾßÇÑ´Ù´Â °ÍÀÎ µ¥, ÀÌ°ÍÀ» ºñÆ®¿¬»êÀÎ XOR¸¦ ÀÌ¿ëÇÏ¿© ¸ÅÅ©·Î ÇÔ¼ö·Î ¸¸µé¸é ´ÙÀ½°ú °°´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define swap(a,b) { a ^= b; b ^= a; a ^= b; } ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº ÀÌ°ÍÀ» °¡Áö°í ÃʱⰪÀÌ 5, 6ÀÎ º¯¼öÀÇ °ªÀ» ¹Ù²Ù´Â °ÍÀ» ³ªÅ¸³½ °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ +--------+ ¦¢ ¦¢ | ÃʱⰪ | a = 5(ÀÌÁø¼ö:101), b = 6(ÀÌÁø¼ö:110) ¦¢ ¦¢ +--------+ ¦¢ ¦¢ a = a ^ b; (101 xor 110 = 011) -------> a = 3, b = 6 ¦¢ ¦¢ b = b ^ a; (110 xor 011 = 101) -------> a = 3, b = 5 ¦¢ ¦¢ a = a ^ b; (011 xor 101 = 110) -------> a = 6, b = 5 ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ °á°úÀûÀ¸·Î µÎ º¯¼öÀÇ °ªÀº ¹Ù²î¾ú´Ù. ÀÌ ¸ÅÅ©·Î ÇÔ¼öÀÇ Æ¯Â¡Àº ÇÔ¼ö È£ÃâÀÌ µÇÁö ¾Ê°í, ÇÁ·Î±× ·¥ Áß°£¿¡ ³¢¾î µé¾î°¡¹Ç·Î ½ÇÇà ¼Óµµµµ ºü¸£´Ù. »Ó¸¸ ¾Æ´Ï¶ó ÀÌ ¾Ë°í¸®ÁòÀº Á¶±Ý¸¸ ¼öÁ¤Çϸé Á¤ ¼öÇü »Ó¸¸ ¾Æ´Ï¶ó ´Ù¸¥ µ¥ÀÌÅÍ À¯Çü¿¡µµ Àû¿ë½Ãų ¼ö ÀÖ´Ù. < #include ¹® > #include ¹®Àº #define ¹®°ú ¸¶Âù°¡Áö·Î Àü󸮱âÀÇ ÀÏÁ¾ÀÌ´Ù. #include¹®Àº ´ÙÀ½°ú °°ÀÌ µÎ °¡Áö ÇüÅ·Π»ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ ©ç #include <È­ÀÏ À̸§> /* ½Ã½ºÅÛ Á¦°ø È­ÀÏ */ ¦¢ ¦¢ ©è #include "È­ÀÏ À̸§ /* »ç¿ëÀÚ Á¤ÀÇ È­ÀÏ */ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ #includeÇϴµ¥´Â µÎ °¡Áö Çü½ÄÀÌ Àִµ¥, ©ç°ú °°ÀÌ < >·Î µÑ·Á½Î¿© ÀÖ´Â È­ÀÏÀº C¿¡¼­ ¹Ì¸® Á¤ÇسõÀº µð·ºÅ丮(MSC¿Í TC´Â ÀÚ½ÅÀÌ ¼³Ä¡µÈ µð·ºÅ丮 ¹ØÀÇ INCLUDE)¿¡¼­ ã°Ô µÈ´Ù. °Å±â ¿¡ ÇØ´ç È­ÀÏÀÌ ÀÖÀ¸¸é À̸¦ ÀоîµéÀÌ°í ¾øÀ¸¸é ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. ¹Ý¸é¿¡ ©è¿Í °°ÀÌ " "·Î µÑ·¯½Î ¿© ÀÖ´Â È­ÀÏÀº ÇöÀçÀÇ µð·ºÅ丮¿¡¼­ ã°Ô µÈ´Ù. #include¶ó´Â ¸í·É¾î´Â µÚ¿¡ ¾²ÀÎ È­ÀÏÀ» ÇöÀç È­ÀÏÀÇ À­ºÎºÐÀ¸·Î Àоî¿Â´Ù(Áï È­ÀÏÀ» ÀÐ¾î µéÀÌ ´Â ¹®ÀåÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù). ÀÌ·¸°Ô Çؼ­ »õ·Î¿î È­ÀÏÀ» Çü¼ºÇÑ ´ÙÀ½ ÄÄÆÄÀÏÇÏ°Ô µÈ´Ù. #includeÇؼ­ ÀÐÀ» ¼ö ÀÖ´Â È­ÀÏÀº ÅؽºÆ® È­ÀÏÀÌ¸é ¾î´À°ÍÀ̳ª ±¦Âú´Ù(ÀϹÝÀûÀ¸·Î È®Àå¸íÀÌ *.h ÀÎ °æ¿ì°¡ ¸¹´Ù). ÇÏÁö¸¸ ÄÄÆÄÀÏÇÒ ¶§ ¿¡·¯°¡ ¹ß»ýÇÏÁö ¾ÊÀ¸·Á¸é ¹Ýµå½Ã C¾ð¾î ¹®¹ý¿¡ ¸Â°Ô ¾²¿© Áø È­ÀÏÀ̾î¾ß ÇÑ´Ù. ±×¸®°í #include·Î Æ÷ÇÔÇÑ È­ÀÏ ³»¿¡ ¶Ç #include ¹®ÀÌ ÀÖÀ» ¼ö ÀÖÀ¸¸ç ÀÌ°æ ¿ì ÇØ´ç È­ÀÏÀ» ¸¶Âù°¡Áö·Î ÀоîµéÀÌ°Ô µÈ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº È­ÀϵéÀÌ Á¸ÀçÇÑ´Ù°í °¡Á¤ÇÒ ¶§. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ /* def.h */ ¦¢ ¦¢ #define MAX 100 ¦¢ ¦¢ #define MIN 10 ¦¢ ¦¢ ¦¢ ¦¢ /* main.c */ ¦¢ ¦¢ #include "def.h" /* #include ¹®ÀÌ ÇÁ·Î±×·¥ÀÇ ¸Ç óÀ½¿¡ ¿À´Â °ÍÀÌ ÀϹÝÀûÀÎ */ ¦¢ ¦¢ main() { /* »ç¿ë ¹æ¹ýÀÌ´Ù */ ¦¢ ¦¢ printf("max = %d, min = %d\n",MAX,MIN); ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ main.cÀÇ #include "def.h"¸¦ ¸¸³ª°Ô µÇ¸é Àü󸮱â´Â def.h¶õ È­ÀÏÀ» Àоîµé¿© #include ¹®ÀÌ ÀÖ ´Â À§Ä¡¿¡ »ðÀÔÇÏ°Ô µÈ´Ù. ±×·¯¸é ´ÙÀ½°ú °°ÀÌ µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ /* def.h */ ¦¢ ¦¢ #define MAX 100 -+ ¦¢ ¦¢ #define MIN 10 -+--------+ ¦¢ ¦¢ | »ðÀÔ ¦¢ ¦¢ /* main.c */ | ¦¢ ¦¢ #define MAX 100 <---------+ ¦¢ ¦¢ #define MIN 10 ¦¢ ¦¢ main() { ¦¢ ¦¢ printf("max = %d, min = %d\n",MAX,MIN); ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±×·¯¸é °á±¹ ÄÄÆÄÀÏ·¯¿¡°Ô´Â ´ÙÀ½°ú °°Àº ÇÁ·Î±×·¥ÀÌ Àü´ÞµÇ°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ main() { ¦¢ ¦¢ printf("max = %d, min = %d\n",100,10); ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¸¸¾à #include ¹®ÀÌ ¾ø´Ù¸é 󸮵ÇÁö ¾ÊÀº ¹®Àå MAX, MINÀÌ ÄÄÆÄÀÏ·¯¿¡°Ô Àü´ÞµÇ¾î ÄÄÆÄÀϽà ¿¡·¯°¡ ¹ß»ýÇÏ°Ô µÉ °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ main() { ¦¢ ¦¢ printf("max = %d, min = %d\n",MAX,MIN); ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ < #undef ¹® > #undef´Â #define°ú´Â Á¤ ¹Ý´ëÀÇ ¿ªÇÒÀ» ÇÏ´Â °ÍÀ¸·Î ÀÌ¹Ì Á¤ÀÇµÈ ±âÈ£ »ó¼ö¸¦ Ãë¼Ò½ÃÄÑ Á¤ÀÇµÇ Áö ¾ÊÀº »óÅ·Π¸¸µé°íÀÚ ÇÒ ¶§ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ÇÁ·Î±×·¥¿¡¼­ ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define SIZE 100 ¦¢ ¦¢ i = SIZE; ¦¢ ¦¢ #undef SIZE ¦¢ ¦¢ j = SIZE; ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ i = SIZE;¸¦ ¼öÇàÇÒ ¶§¿¡´Â SIZE°¡ 100À¸·Î Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î i = 100;°ú °°Áö¸¸, ±× ´ÙÀ½ ¹®Àå #undef SIZE¿¡ ÀÇÇØ SIZEÀÇ Á¤ÀÇ°¡ Ãë¼ÒµÇ¾ú±â ¶§¹®¿¡ j = SIZE;¿¡¼­´Â SIZE°¡ ¸ð¸£´Â ±âÈ£¶ó °í ¿¡·¯°¡ ³ª°Ô µÈ´Ù. #undef¸¦ »ç¿ëÇϸé ÇÁ·Î±×·¥ÀÇ ºÎºÐ¿¡ µû¶ó¼­ °°Àº À̸§ÀÇ ±âÈ£¸¦ ´Ù¸¥ Àǹ̷ΠÁöÁ¤ÇÒ ¼öµµ ÀÖ ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define SIZE 100 ¦¢ ¦¢ i = SIZE; ¦¢ ¦¢ #undef SIZE ¦¢ ¦¢ #define SIZE 200 ¦¢ ¦¢ j = SIZE ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¸¸¾à À§¿¡¼­ #undef¸¦ »ç¿ëÇÏÁö ¾Ê°í ´ÙÀ½°ú °°ÀÌ ±×³É »ç¿ëÇÏ°Ô µÇ¸é ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define SIZE 100 ¦¢ ¦¢ i = SIZE; ¦¢ ¦¢ #define SIZE 200 ¦¢ ¦¢ j = SIZE; ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ SIZE¸¦ Áߺ¹ Á¤ÀÇÇÑ °ÍÀÌ µÇ¾î ÄÄÆÄÀϽÿ¡ ¿¡·¯°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. ƯÈ÷ ½Ã½ºÅÛ Çì´õ È­ÀÏÀ» Æ÷ ÇÔÇÒ ¶§ ÀÚ½ÅÀÌ Á¤ÀÇÇÑ ±âÈ£ »ó¼ö¿Í °°Àº À̸§ÀÇ »ó¼ö°¡ Á¤ÀǵǾî ÀÖÀ»¶§, ÀÌ¿Í °°Àº ¿¡·¯°¡ ¹ß »ýÇÒ ¼ö ÀÖ´Ù. À̶§¿¡µµ #undef¸¦ »ç¿ëÇϸé ÀÌ¿Í °°Àº ¿¡·¯¸¦ ¹æÁöÇÒ ¼ö ÀÖ´Ù. < #if, #elif, #else, #endif, #ifdef, #ifndef ¹® > ÀÌµé ¹®ÀåµéÀº À̸¥¹Ù Á¶°ÇºÎ ÄÄÆÄÀÏÀ» À§ÇÑ °ÍÀ¸·Î ƯÁ¤ Á¶°ÇÀÌ ¸¸Á·Çϸé ÄÄÆÄÀÏ ÀÛ¾÷À» ¼öÇà ÇÏ°í ±×·¸Áö ¾ÊÀ¸¸é ¼öÇàÇÏÁö ¾Êµµ·Ï Çϱâ À§ÇØ »ç¿ëµÈ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ÇÁ·Î±×·¥ÀÇ °æ¿ì ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #if MAX > 100 /* MAX´Â #define¿¡ ÀÇÇØ Á¤ÀǵǾî ÀÖ¾î¾ß ÇÑ´Ù */ ¦¢ ¦¢ size = 100; ¦¢ ¦¢ #elif MAX > 10 /* elif´Â else ifÀÇ ¾àÀÚÀÌ´Ù */ ¦¢ ¦¢ size = 10; ¦¢ ¦¢ #else ¦¢ ¦¢ size = 0; ¦¢ ¦¢ #endif ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§ÀÇ Àǹ̴ if ¹®°ú À¯»çÇÏ´Ù. ´Ü À§ÀÇ ¹®ÀåÀÌ Àü󸮱⿡ ÀÇÇØ Ã³¸®µÇ´Â °ÍÀÌ ´Ù¸¥µ¥, if ´ÙÀ½ ÀÇ Á¶°ÇÀÌ ¸¸Á·µÇ¸é Àü󸮱â´Â size = 100;À» ó¸®ÇÏ¿© ÄÄÆÄÀÏ·¯¿¡°Ô ³Ñ°Ü ÁØ´Ù. ¸¸¾à Á¶°ÇÀÌ ¸¸ Á·µÇÁö ¾ÊÀ¸¸é ±× ´ÙÀ½ÀÇ elif·Î °¡¼­ Á¶°ÇÀÌ ¸¸Á·µÇ´ÂÁö¸¦ º¸°í, ¸¸Á·µÇ¸é Àü󸮱â´Â size = 10; À» ó¸®ÇÏ¿© ÄÄÆÄÀÏ·¯¿¡°Ô Àü´ÞÇÏ°Ô µÈ´Ù. °è¼Ó ±×·¸°Ô ÇØ ³ª°¡´Ù°¡ ¸¸Á·µÇ´Â Á¶°ÇÀÌ ¾øÀ¸¸é else ´ÙÀ½ÀÇ size = 0;À» ó¸®ÇÏ¿© Àü´ÞÇÏ°Ô µÈ´Ù. ¸¸¾à else ¶ÇÇÑ ¾ø´Â °æ¿ì¿¡´Â À§ÀÇ ¹®ÀåµéÀ» Çϳªµµ ó¸®ÇÏÁö ¾Ê°Ô µÇ¹Ç·Î ÄÄÆÄÀÏ·¯¿¡°Ô´Â ¹®ÀåµéÀÌ Çϳªµµ Àü´ÞµÇÁö ¾Ê¾Æ ¸¶Ä¡ ÇÁ·Î±×·¥¿¡ ¾Æ¿¹ ¾ø ´Â °Í°ú °°Àº °á°ú¸¦ ³º°Ô µÈ´Ù. ¹Ý¸é¿¡ #if³ª #else ´ÙÀ½¿¡ ¶Ç #if°¡ ¿Ã ¼ö Àֱ⠶§¹®¿¡ À§ ÇÁ·Î±× ·¥Àº ´ÙÀ½°ú °°ÀÌ ´Ù¸£°Ô ¸¸µé¼öµµ ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #if MAX > 100 ¦¢ ¦¢ size = 100; ¦¢ ¦¢ #else ¦¢ ¦¢ #if MAX > 10 ¦¢ ¦¢ size = 10; ¦¢ ¦¢ #else ¦¢ ¦¢ size = 0; ¦¢ ¦¢ #endif ¦¢ ¦¢ #endif ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±×¸®°í #ifdef¿Í #ifndef´Â #endifÇÏ°í¸¸ °°ÀÌ »ç¿ëÇÏ¸ç ´ÙÀ½°ú °°Àº ÇüÅ·Π»ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #ifdef ±âÈ£ /* #ifdefÀº µÚÀÇ ±âÈ£°¡ #define¿¡ ÀÇÇØ Á¤ÀǵǾî ÀÖÀ¸¸é */ ¦¢ ¦¢ ¹®Àåµé; /* ÂüÀÌ µÇ¾î ±× ´ÙÀ½ÀÇ ¹®ÀåµéÀ» ó¸®ÇÏ°Ô µÇ°í, ±×·¸Áö */ ¦¢ ¦¢ #endif /* ¾ÊÀ¸¸é #endif ´ÙÀ½À¸·Î ³Ñ¾î°¡°Ô µÈ´Ù */ ¦¢ ¦¢ ¦¢ ¦¢ #ifndef ±âÈ£ /* #ifndefÀº µÚÀÇ ±âÈ£°¡ #define¿¡ ÀÇÇØ Á¤ÀǵǾî ÀÖÁö */ ¦¢ ¦¢ ¹®Àåµé; /* ¾ÊÀ¸¸é ÂüÀÌ µÇ¾î ±× ´ÙÀ½ÀÇ ¹®ÀåµéÀ» ó¸®ÇÏ°Ô µÇ¸ç, */ ¦¢ ¦¢ #endif /* Á¤ÀǵǾî ÀÖÀ¸¸é #endif ´ÙÀ½À¸·Î ³Ñ¾î°¡°Ô µÈ´Ù */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº ÀÌ°ÍÀ» ¿¹·Î µç ÇÁ·Î±×·¥ÀÌ´Ù. main() { #define TEST 100 #ifdef TEST printf("TEST is defined.\n"); #endif #ifdef SIZE printf("SIZE is defined.\n"); #endif #ifndef TEST printf("TEST is not defined.\n"); #endif #ifndef SIZE printf("SIZE is not defined.\n"); #endif #undef TEST #define SIZE /* °ªÀÌ ¾ø°Ô Á¤ÀǵǾúÀ¸³ª À̵µ ¾ö¿¬È÷ Á¤ÀÇµÈ °ÍÀÌ´Ù */ #ifdef TEST printf("TEST is defined.\n"); #endif #ifdef SIZE printf("SIZE is defined.\n"); #endif #ifndef TEST printf("TEST is not defined.\n"); #endif #ifndef SIZE printf("SIZE is not defined.\n"); #endif } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- TEST is defined. SIZE is not defined. SIZE is defined. TEST is not defined. ¡Ø ÇÁ¸®ÇÁ·Î¼¼¼­¹®À» À§ÇÑ ¿¬»êÀÚ ÇÁ¸®ÇÁ·Î¼¼¼­¹® ³»¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿¬»êÀÚµéÀÌ Àִµ¥, ´ÙÀ½°ú °°ÀÌ 3°³°¡ ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #, ##, defined ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ #°ú ##Àº ÁÖ·Î #defineÀ» »ç¿ëÇÏ¿© ¸ÅÅ©·Î¸¦ Á¤ÀÇÇÒ ¶§ »ç¿ëµÇ´Â ¿¬»êÀÚµé·Î #Àº ¹Ù·Î µÚÀÇ ÀÎ ÀÚ¸¦ ½ºÆ®¸µÀ¸·Î ¹Ù²Ù¾îÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¿¹¸¦ µé¾î ¾î¶² Á¤¼ö º¯¼öÀÇ À̸§°ú ±× °ªÀ» Ãâ·Â½ÃÅ° ´Â ¸ÅÅ©·Î¸¦ ÀÛ¼ºÇÏ°íÀÚ ÇÒ ¶§ ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define PRI(x) printf(#x "= %d\n",x) ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§ ¿¹¿¡¼­ x¾Õ¿¡ '#' ¿¬»êÀÚ¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. À§¿Í °°ÀÌ Á¤ÀÇÇÑ ÈÄ ´ÙÀ½°ú °°ÀÌ ¸ÅÅ©·Î¸¦ »ç¿ë ÇÏ°Ô µÇ¸é ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ PRI(i); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ÀÌ´Â ´ÙÀ½°ú °°ÀÌ ¹Ù²î°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ printf("i" "= %d\n",i); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Áï #x¿¡ ÀÇÇØ x°¡ ½ºÆ®¸µ x, Áï "x"·Î ¹Ù²î°Ô µÇ¾î "i"°¡ µÇ¸ç µÎ °³ÀÇ ½ºÆ®¸µÀ» ¿¬Á¢Çؼ­ »ç¿ë Çϸé ÀÌ´Â ÇϳªÀÇ ½ºÆ®¸µÀ¸·Î °£ÁֵǹǷÎ, ´ÙÀ½°ú °°Àº °á°ú°¡ µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ printf("i = %d\n",i); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ '#' ¿¬»êÀÚ´Â À§¿Í °°ÀÌ ÀÎÀÚÀÇ À̸§À» Ãâ·ÂÇϰųª ½ºÆ®¸µ¿¡ Æ÷ÇÔ½ÃÅ°°íÀÚ ÇÒ ¶§ ÁÖ·Î »ç¿ëÇÏ°í ÀÖ´Ù. ¹Ý¸é¿¡ '##' ¿¬»êÀÚ´Â x##yÀÇ ÇüÅ·Π»ç¿ëÇϴµ¥, x¿Í y¸¦ ºÙ¿© ÇϳªÀÇ À̸§À¸·Î ¸¸µç´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define CON(x,y) (x##y) ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¿Í °°ÀÌ Á¤ÀÇÇØ ³õ°í ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ¸é ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ CON(i,1) = 100; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ÀÌ´Â ´ÙÀ½°ú °°ÀÌ ¹Ù²î°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ i1 = 100; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Áï º¯¼öÀÇ À̸§µéÀ» µÑ·Î ³ª´­ ¼ö ÀÖÀ» ¶§, ¶Ç´Â »óȲ¿¡ ¸Â°Ô ¼­·Î ´Ù¸¥ º¯¼öµéÀ» »ç¿ëÇÏ°íÀÚ ÇÒ ¶§ ## ¿¬»êÀÚ¸¦ »ç¿ëÇϸé ÆíÇÑ °æ¿ì°¡ ¸¹´Ù. ¸¶Áö¸·À¸·Î defined ¿¬»êÀÚ´Â #if ¹®¿¡¼­ »ç¿ëÇÏ´Â °ÍÀ¸·Î ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #if defined(À̸§) ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ÀÌ´Â À̸§ ±×´ë·Î À̸§ÀÌ Á¤ÀǵǾî Àִ°¡¸¦ ¹°¾îº¸´Â °ÍÀ¸·Î¼­ Á¤ÀǵǾî ÀÖÀ¸¸é ÂüÀ̵ǰí Á¤ÀÇ µÇ¾î ÀÖÁö ¾ÊÀ¸¸é °ÅÁþÀÌ µÈ´Ù. µû¶ó¼­ À§ÀÇ ¹®ÀåÀº ´ÙÀ½°ú °°´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #ifdef À̸§ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±×·¯³ª ¿©·¯ °³ÀÇ À̸§ÀÌ µ¿½Ã¿¡ Á¤ÀǵǾîÀÖ´Â Áö¸¦ Á¶»çÇÏ°íÀÚ ÇÒ ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ defined ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ Æí¸®ÇÑ °æ¿ì°¡ ¸¹´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #if defined(OS) && defined(MACHINE) ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ < ±âŸ Àü󸮱â > ©ç #line ¹® #line ¹®Àº »ç¿ëÀÚ¸¦ À§ÇÑ ¹®ÀåÀ̱⠺¸´Ù´Â ÄÄÆÄÀÏ·¯ ÀÚü¸¦ À§ÇÑ ÇÁ¸®ÇÁ·Î¼¼¼­¹®ÀÌ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ test.c¶õ È­ÀÏÀÌ ÀÖÀ» ¶§ ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ main() { /* test.c 1¹ø ¶óÀÎ */ ¦¢ ¦¢ int x, y; /* test.c 2¹ø ¶óÀÎ */ ¦¢ ¦¢ x = 1; /* test.c 3¹ø ¶óÀÎ */ ¦¢ ¦¢ #line 100 "main.c" /* test.c 4¹ø ¶óÀÎ */ ¦¢ ¦¢ y = 1; /* main.c 100¹ø ¶óÀÎ */ ¦¢ ¦¢ printf("%d, %d\n",x,y); /* main.c 101¹ø ¶óÀÎ */ ¦¢ ¦¢ } /* main.c 102¹ø ¶óÀÎ */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ óÀ½ 3ÁÙÀ» ó¸®ÇÒ ¶§´Â ÀÌ È­ÀÏÀÇ À̸§ÀÌ test.c°¡ µÇ°í ¶óÀÎÀÇ ¹øÈ£µµ Â÷·Ê´ë·Î 1, 2, 3ÀÌ µÈ´Ù. ±×·±µ¥ ±× ´ÙÀ½ #line 100 "main.c"¸¦ ¸¸³ª¸é¼­ ÀÌ È­ÀÏÀÇ À̸§ÀÌ main.c·Î ¹Ù²î°í ¶óÀÎ ¹øÈ£µµ 5 °¡ ¾Æ´Ñ 100ºÎÅÍ ½ÃÀÛÇÏ°Ô µÈ´Ù. ÀÌ´Â ´ÙÀ½°ú °°ÀÌ ÀϺη¯ ¿¡·¯°¡ ³ª°Ô ¸¸µé°í ÄÄÆÄÀÏ ÀÛ¾÷À» Çغ¸¸é ½±°Ô ¾Ë ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ main() { ¦¢ ¦¢ int j = i; ¦¢ ¦¢ #line 100 "error.c" ¦¢ ¦¢ k = 1; ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº À§ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÒ ¶§ ³ªÅ¸³ª´Â ¸Þ½ÃÁöÀÌ´Ù. (TC) ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ C:\TC>tcc test.c ¦¢ ¦¢ Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International ¦¢ ¦¢ test.c ¦¢ ¦¢ Error test.c 2: Undefined symbol 'i' in function main ¦¢ ¦¢ Error error.c 100: Undefined symbol 'k' in function main ¦¢ ¦¢ Warning error.c 101: 'j' is assigned a value which is never used in function mai ¦¢ ¦¢ n ¦¢ ¦¢ *** 2 errors in Compile *** ¦¢ ¦¢ ¦¢ ¦¢ Available memory 395584 ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ (MSC) ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ C:\C600\BIN>cl test.c ¦¢ ¦¢ Microsoft (R) C Optimizing Compiler Version 6.00 ¦¢ ¦¢ Copyright (c) Microsoft Corp 1984-1990. All right reserved. ¦¢ ¦¢ ¦¢ ¦¢ test.c ¦¢ ¦¢ test.c(2) : error C2065: 'i' : undefined ¦¢ ¦¢ error.c(100) : error C2065: 'k' : undefined ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¸¦ º¸¸é 2¹ø ÁÙÀÇ ¿¡·¯´Â Á¦´ë·Î test.c¶õ È­ÀÏÀÇ ¿¡·¯¶ó°í ³ª¿À°í ÀÖÁö¸¸ #line ¹® ´ÙÀ½ÀÇ ¿¡ ·¯´Â error.c¶õ È­ÀÏÀÇ 100¹ø° ÁÙ¿¡ ´ëÇÑ ¿¡·¯·Î ³ª¿À´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ¿Í °°ÀÌ #line¹®Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϱâ À§ÇØ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ÇÁ·Î±×·¥ÀÌ main.c¶õ ÀÌ ¸§À¸·Î ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÇ¾úÀ» ¶§ ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #include "my.h" ¦¢ ¦¢ main() { ¦¢ ¦¢ int k = i; ¦¢ ¦¢ : ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¸Ç óÀ½ #include ¹®¿¡ ÀÇÇØ Àü󸮱Ⱑ ÀÌ È­ÀÏÀ» ÀÐ¾î µéÀÌ°í ÀоîµéÀÎ °ÍÀ» ÄÄÆÄÀÏ·¯¿¡°Ô Àü ´ÞÇÏ°Ô µÈ´Ù. ±×·±µ¥ my.h¿¡ ¿¡·¯°¡ ÀÖ´Ù°í °¡Á¤ÇÑ´Ù¸é, ÄÄÆÄÀÏ·¯´Â my.h¶õ È­ÀÏÀ» Àоú´ÂÁö ¸ð ¸£±â ¶§¹®¿¡ main.c¿¡¼­ ¿¡·¯°¡ ³µ´Ù°í ÇÒ °ÍÀÌ´Ù. ¶Ç my.h¸¦ ÀоîµéÀ̹ǷΠÇؼ­ À§ÀÇ main.c´Â ´Ã¾î³ª°Ô µÈ´Ù. Áï ¶óÀÎ ¹øÈ£°¡ Áõ°¡Çϱ⠶§¹®¿¡ ¸¸¾à int k = i;¿¡¼­ ¿¡·¯°¡ ³µ´Ù ÇÏ´õ¶óµµ ÀÌ´Â ¶óÀÎ ¹øÈ£ 3ÀÌ ¾Æ´Ñ º¸´Ù Å« °ªÀ¸·Î ³ª¿À°Ô µÈ´Ù. ±×·¸±â ¶§¹®¿¡ »ç¿ëÀÚ´Â ¾îµð¼­ ¿¡·¯°¡ ³µ´ÂÁö ÀüÇô °¨À» ¸øÀâ°Ô µÉ °ÍÀÌ´Ù. ±×·¯³ª À§ÀÇ ÇÁ·Î±×·¥À» ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÏ°Ô µÇ¸é ¿¡·¯°¡ ³ª´õ¶ó µµ ¿Ã¹Ù¸¥ ¸Þ½ÃÁö¸¦ ¾òÀ» ¼ö ÀÖ°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #line 1 "my.h" /* ½ÇÁ¦·Î »ç¿ëÀÚ°¡ ÀÌ¿Í °°ÀÌ ÇÏÁö ¾Ê´õ¶óµµ */ ¦¢ ¦¢ #include "my.h" /* Àü󸮱Ⱑ ¾Ë¾Æ¼­ ó¸®ÇØ Áֱ⠶§¹®¿¡ »ç¿ëÀÚµéÀº */ ¦¢ ¦¢ #line 2 "main.c" /* ¿Ã¹ÙÀº ¿¡·¯ ¸Þ½ÃÁö¸¦ ¾ò°í ÀÖ´Ù */ ¦¢ ¦¢ main() { ¦¢ ¦¢ int k = i; ¦¢ ¦¢ : ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ©è #error ¹® #error ¹®Àº Àü󸮱â·Î ÇÏ¿©±Ý ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·Â½ÃÅ°°í ÄÄÆÄÀÏ ÀÛ¾÷À» ÇÏÁö ¾Êµµ·Ï ¸¸µå´Â °ÍÀ¸·Î ´ÙÀ½°ú °°Àº ÇüÅ·Π»ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #error "¿¡·¯ ¸Þ½ÃÁö ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Àü󸮱Ⱑ ÀÌ ¹®ÀåÀ» ¸¸³ª°Ô µÇ¸é µÚÀÇ ¿¡·¯ ¸Þ½ÃÁö¸¦ ½ÇÁ¦·Î ÄÄÆÄÀÏ ¿¡·¯°¡ ³­ °Íó·³ Ãâ·ÂÇÏ °Ô µÈ´Ù. µû¶ó¼­ ÄÄÆÄÀÏ ÀÛ¾÷ÀÌ Áß´ÜµÇ°í ¼öÇà È­ÀÏÀº ¸¸µé¾îÁöÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ÇÁ·Î±× ·¥À» ÄÄÆÄÀÏ ÇØ º¸¸é ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ main() { ¦¢ ¦¢ #error "After main" /* ¿¡·¯ ¸Þ½ÃÁö¿¡´Â ¸¦ ÂïÁö ¾Ê¾Æµµ µÈ´Ù */ ¦¢ ¦¢ int i = 10; ¦¢ ¦¢ #error "after i" /* °ø¹éÀ» Á¦¿ÜÇÑ Ã¹ÀÚºÎÅÍ ¿¡·¯ ¸Þ½ÃÁö·Î ÀνÄÇÑ´Ù */ ¦¢ ¦¢ printf("%d\n",i); ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½°ú °°Àº °á°ú°¡ ³ª¿ÈÀ» º¼ ¼ö ÀÖ´Ù. (TC) ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ C:\TC>tcc test.c ¦¢ ¦¢ Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International ¦¢ ¦¢ test.c ¦¢ ¦¢ Error test.c 2: Error directive: "After main" in function main ¦¢ ¦¢ *** 1 errors in Compile *** ¦¢ ¦¢ ¦¢ ¦¢ Available memory 403586 ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ (MSC) ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ C:\C600\BIN>cl test.c ¦¢ ¦¢ Microsoft (R) C Optimizing Compiler Version 6.00 ¦¢ ¦¢ Copyright (c) Microsoft Corp 1984-1990. All right reserved. ¦¢ ¦¢ ¦¢ ¦¢ test.c ¦¢ ¦¢ test.c(2) : error C2189: #error : "After main" ¦¢ ¦¢ test.c(4) : error C2189: #error : "after i" ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ #error ¹®Àº Àü󸮱⿡°Ô ¿¡·¯°¡ ¹ß»ýÇßÀ½À» ¾Ë·ÁÁÖ°íÀÚ ÇÒ ¶§ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î °¢ ¿î¿µÃ¼ Á¦¿¡ ¸Â°Ô ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§ »ç¿ëÀÚ°¡ ¿î¿µÃ¼Á¦¸¦ Á¤ÀÇÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Ù. À̶§ ´ÙÀ½°ú °°ÀÌ #error ¹®À» »ç¿ëÇÏ¸é ¿¡·¯·Î ó¸®ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #if OS == DOS ¦¢ ¦¢ DOS ÇÁ·Î±×·¥ ¦¢ ¦¢ #elif OS == Unix ¦¢ ¦¢ Unix ÇÁ·Î±×·¥ ¦¢ ¦¢ #elif OS == VMS ¦¢ ¦¢ VMS ÇÁ·Î±×·¥ ¦¢ ¦¢ #else ¦¢ ¦¢ #error "OS is not defined!" ¦¢ ¦¢ #endif ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ < ±×¹ÛÀÇ ±â´É > ©ç typedef ¹® typedef ¹®Àº »õ·Î¿î µ¥ÀÌÅÍ À¯ÇüÀ» Á¤ÀÇÇÒ ¶§ »ç¿ëÇÑ´Ù. ±×·¯³ª ½ÇÁ¦·Î ¿ÏÀüÈ÷ »õ·Î¿î µ¥ÀÌÅÍ À¯ÇüÀ» ¸¸µå´Â °ÍÀº ¾Æ´Ï°í ´ÜÁö ±âÁ¸¿¡ ÀÖ´Â µ¥ÀÌÅÍ À¯ÇüÀÇ À̸§À» Á¤ÀÇÇÏ´Â °Í¿¡ ºÒ°úÇÏ´Ù. typedef ¹®Àº ´ÙÀ½°ú °°Àº ÇüÅ·Π»ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ typedef <¿©·¯ °¡Áö µ¥ÀÌÅÍ À¯Çü> <´ëÇ¥ÇÏ´Â ¹®ÀÚ¿­>; ¦¢ ¦¢ ¦¢ ¦¢ <¿©·¯ °¡Áö µ¥ÀÌÅÍ À¯Çü>Àº C°¡ Áö¿øÇÏ´Â ¸ðµç µ¥ÀÌÅÍ À¯ÇüÀÌ ¿Ã ¼ö ÀÖ´Ù. ¦¢ ¦¢ <´ëÇ¥ÇÏ´Â ¹®ÀÚ¿­>Àº »ç¿ëÀÚ°¡ ÀÓÀÇ·Î Á¤ÇÏ°í ³ªÁß¿¡ º¯¼ö¸¦ Á¤ÀÇÇÒ ¶§ »ç¿ëÇÑ´Ù. ¦¢ ¦¢ ¦¢ ¦¢ [»ç¿ë ¿¹] ------------------------------------------------------------------- ¦¢ ¦¢ typedef unsigned char byte; /* unsigned charÇüÀ» byte¶ó°í ´ëÇ¥ÇÔ */ ¦¢ ¦¢ typedef unsigned int word; /* unsigned intÇüÀ» word¶ó°í ´ëÇ¥ÇÔ */ ¦¢ ¦¢ typedef int array[10]; /* intÇü ¹è¿­À» array¶ó°í ´ëÇ¥ÇÔ */ ¦¢ ¦¢ ¦¢ ¦¢ byte ch; /* unsigned char ch¿Í °°À½ */ ¦¢ ¦¢ word i; /* unsigned int i¿Í °°À½ */ ¦¢ ¦¢ array x; /* int x[10]°ú °°À½ */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº typedef¸¦ »ç¿ëÇÏ¿© ±¸Á¶Ã¼¸¦ ¼±¾ðÇÑ ¿¹ÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ +----------------- ±¸Á¶Ã¼ Åà (structure tag) »ý·« °¡´É ¦¢ ¦¢ +------+----------------------------+ ¦¢ ¦¢ typedef|struct { | ¦¢ ¦¢ |char name[30]; --+ | ¦¢ ¦¢ |int kor; | | ¦¢ ¦¢ |int eng; +-- ±¸¼º¿ä¼Ò | ¦¢ ¦¢ |int math; | | ¦¢ ¦¢ |int total; | | ¦¢ ¦¢ |float ave; --+ | ¦¢ ¦¢ |}+MAN;-----------------------------+ ¦¢ ¦¢ +-+ +-------------------- typedef ¹®¿¡ ÀÇÇؼ­ MANÀÌ Á¡¼± ¹Ú½ººÎºÐÀ» ´ëÇ¥ÇÑ´Ù ¦¢ ¦¢ ¦¢ ¦¢ void main(void) { ¦¢ ¦¢ MAN person; ¦¢ ¦¢ | +---------- ÇÁ·Î±×·¥»ó¿¡¼­ º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§ ¾²´Â º¯¼öÀ̸§ personÀ̶ó´Â ¦¢ ¦¢ | ±¸Á¶Ã¼¸¦ Á¤ÀÇ ÇÏ¿´´Ù ¦¢ ¦¢ +--------------- typedefÀ¸·Î ´ëÇ¥µÈ ±¸Á¶Ã¼ À̸§ ¦¢ ¦¢ : ¦¢ ¦¢ : ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ main ÇÔ¼ö ¾È¿¡¼­ ¸¶Ä¡ intÇü º¯¼ö³ª charÇü º¯¼ö µîÀ» Á¤ÀÇÇÏ´Â °Í°ú °°ÀÌ ±¸Á¶Ã¼¸¦ Á¤ÀÇÇÑ´Ù. typedef ¹®À» »ç¿ëÇϸé ÇÁ·Î±×·¥À» º¸´Ù ´õ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ¸¸µé ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó ³ªÁß¿¡ ÇÁ·Î±×·¥À» º¯°æÇϰųª ¼öÁ¤ÇÒ ¶§¿¡µµ Æí¸®ÇÏ´Ù. ¹Ý¸é¿¡ #define ¹®À» »ç¿ëÇصµ ÀÌ¿Í ºñ½Á ÇÑ È¿°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ÇÁ·Î±×·¥Àº ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ typedef unsigned char TEXT; ¦¢ ¦¢ TEXT a, b, c; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½°ú °°ÀÌ #define ¹®À» »ç¿ëÇÏ¿©µµ °°Àº Àǹ̸¦ °®°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define TEXT unsigned char ¦¢ ¦¢ TEXT a, b, c; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ °á°ú´Â °°Áö¸¸ ó¸® °úÁ¤ÀÌ ´Ù¸¥µ¥ #define ¹®Àº Àü󸮱⿡ ÀÇÇØ Ã³¸®µÇÁö¸¸ typedef ¹®Àº CÀÇ ¹®ÀåÀ̱⠶§¹®¿¡ ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ Ã³¸®µÈ´Ù. ±×¸®°í typedef ¹®Àº µ¥ÀÌÅÍ À¯Çü¸¸ Á¤ÀÇÇÒ ¼ö ÀÖ´Â µ¥ ¹ÝÇØ #define ¹®Àº ¾î¶°ÇÑ ½ºÆ®¸µµµ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª typedef ¹®Àº ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ Ã³ ¸®µÇ±â ¶§¹®¿¡ CÀÇ ±¸Á¶¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù(´ÙÀ½ÀÇ vector³ª matrix¸¦ #define ¹®À¸·Î Á¤ÀÇÇϱâ´Â ¸Å¿ì ¾î·Æ´Ù). ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ typedef int vector[100]; ¦¢ ¦¢ typedef vector matrix[100]; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ vector´Â int À¯ÇüÀÇ ¿ø¼Ò 100°³·Î µÈ ¹è¿­À» Á¤ÀÇÇÑ °ÍÀÌ°í matrix´Â vector À¯Çü 100°³·Î µÈ ¹è¿­À» Á¤ÀÇÇÑ °ÍÀε¥, vector ÀÚü°¡ 100°³ÀÇ ¿ø¼Ò·Î µÈ int À¯ÇüÀÇ ¹è¿­À̹ǷΠ°á±¹ matrix´Â ia[100][100]°ú °°ÀÌ 100 * 100°³ÀÇ ¿ø¼Ò·Î µÈ ¹è¿­À» °¡¸®Å°´Â À̸§ÀÌ µÈ´Ù. ©è ¿­°Å µ¥ÀÌÅÍ À¯Çü(enumeration data type) ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀÇ »ç¿ë ¹æ¹ýÀº ±¸Á¶ µ¥ÀÌÅÍ À¯Çü°ú À¯»çÇѵ¥ ´ÙÀ½°ú °°Àº ÇüÅ·Π»ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ ©ç enum ¿­°Å µ¥ÀÌÅÍ À¯Çü À̸§ { ¿ø¼Ò1, ...,¿ø¼Òn } [ º¯¼ö1, ...,º¯¼ön ]; ¦¢ ¦¢ ©è enum ¿­°Å µ¥ÀÌÅÍ À¯Çü À̸§ º¯¼ö1, ...,º¯¼ön; /* enumÀº enumerationÀÇ ¾àÀÚ·Î ¦¢ ¦¢ ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀÓÀ» ³ªÅ¸³»¸ç, µÚÀÇ À̸§Àº ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀÇ À̸§À» ÀǹÌÇÑ´Ù */ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ©çÀº »õ·Î¿î ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀ» Á¤ÀÇÇÏ´Â °ÍÀ¸·Î ÀÌ´Â Áß°ýÈ£ ¾ÈÀÇ ¿ø¼Òµé·Î ÀÌ·ç¾îÁø µ¥ÀÌÅÍ À¯ÇüÀÌ µÈ´Ù. ±×¸®°í ±× µÚ¿¡ º¯¼öµéÀ» Á¤ÀÇÇϸé ÀÌ º¯¼öµéÀº ¸ðµÎ ¾ÕÀÇ ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀÇ º¯ ¼öµéÀÌ µÇ¸ç, ÀÌ º¯¼öµéÀº Áß°ýÈ£ ¾ÈÀÇ ¿ø¼Òµé¸¸ °ªÀ¸·Î °¡Áú ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Á¤ ÀÇÇÏ¿´À» ¶§ ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ enum weekend { Saturday, Sunday } d1, d2; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ º¯¼ö d1°ú d2´Â Saturday³ª Sunday¸¦ °ªÀ¸·Î °¡Áú¼ö ÀÖ°Ô µÈ´Ù. ±×¸®°í ÁÖÀÇÇÒ °ÍÀº Saturday ¿Í Sunday´Â Á¤¼ö »ó¼öÀÌÁö ½ºÆ®¸µÀÌ ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù. µû¶ó¼­ d1°ú d2´Â ³»ºÎÀûÀ¸·Î Á¤¼ö À¯Çü ÀÇ º¯¼ö°¡ µÈ´Ù. ¹Ý¸é¿¡ ©è´Â ÀÌ¹Ì ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀÌ Á¤ÀǵǾî ÀÖÀ» ¶§ ÀÌ À¯ÇüÀÇ º¯¼öµéÀ» º°µµ·Î Á¤ÀÇÇÒ ¶§ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î À§¿Í °°ÀÌ weekend¶õ ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀÌ Á¤ÀǵǾî ÀÖÀ» ¶§. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ enum weekend newday; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¿¡¼­ newday´Â weekend À¯ÇüÀÇ º¯¼ö°¡ µÇ¾î Saturday³ª Sunday¸¦ °ªÀ¸·Î °¡Áú¼ö ÀÖ´Ù. »õ·Î¿î ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀ» Á¤ÀÇÇϸé C ÄÄÆÄÀÏ·¯´Â À̸¦ ³»ºÎÀûÀ¸·Î´Â 0ºÎÅÍ ½ÃÀÛÇÏ´Â Á¤¼ö·Î º¯È¯ÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ¿´À» ¶§. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ enum days { Mon, Tue, Wed, Thu, Fri, Sat, Sun } d; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ MonºÎÅÍ Â÷·Ê·Î 0, 1, 2, ... ÀÇ °ªÀ» °®°Ô µÇ¾î MonÀº 0, Tue´Â 1, Wed´Â 2, Thu´Â 3, Fri´Â 4, SatÀº 5, ±×¸®°í SunÀº 6ÀÌ µÈ´Ù. µû¶ó¼­ d = Sat;Àº SatÀÌ 5À̱⠶§¹®¿¡ ½ÇÁ¦·Î d = 5;¿Í °°´Ù. ±×·¯³ª °¢ ¿ø¼ÒµéÀÇ °ªÀ» enum µ¥ÀÌÅÍ À¯ÇüÀ¸·Î ¼±¾ðÇÒ ¶§ »ç¿ëÀÚ°¡ ÁöÁ¤ÇÒ ¼öµµ Àִµ¥, ´ÙÀ½ °ú °°ÀÌ ¿ø¼Ò = °ªÀÇ ÇüÅ·ΠÁöÁ¤ÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ enum days { Mon=1, Tue=3, Wed=3, Thu=-1, Fri=Mon+100, Sat=10, Sun=5 } d; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Tue¿Í Wed´Â °°Àº °ªÀ» °®°Ô µÇ´Âµ¥, ÀÌ¿Í °°ÀÌ °°Àº °ªÀ» °¡Á®µµ »ó°üÀº ¾ø´Ù. ¶Ç ƯÁ¤ ¿ø¼Ò ¸¸ °ªÀ» ÁöÁ¤ÇÏ°í ³ª¸ÓÁö´Â ¾ÈÁÙ ¼öµµ Àִµ¥, À̶§ °ªÀÌ ÁöÁ¤µÇÁö ¾ÊÀº ¿ø¼ÒµéÀº °ªÀÌ ÁöÁ¤µÈ °¡Àå °¡±î¿î ¿ø¼Ò¿¡¼­ºÎÅÍ 1¾¿ Áõ°¡ÇÏ´Â °ªÀ» °®°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ enum days { Mon, Tue, Wed=5, Thu, Fri=100, Sat, Sun }; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ MonÀº ÁöÁ¤µÈ °ªÀÌ ¾ø°í ¸Ç óÀ½ ¿ø¼ÒÀ̹ǷΠ0ÀÌ µÇ¸ç, µû¶ó¼­ ±× ´ÙÀ½ ¿ø¼ÒÀÎ Tue´Â 1ÀÌ µÈ ´Ù. ±×¸®°í Wed°¡ 5À̱⠶§¹®¿¡ Thu´Â °ªÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò¾îµµ 6ÀÌ µÇ¸ç, ¸¶Âù°¡Áö·Î Fri°¡ 100 À̱⠶§¹®¿¡ Sat°ú SunÀº °¢°¢ 101°ú 102°¡ µÈ´Ù. ¿­°Å µ¥ÀÌÅÍ À¯ÇüÀ» »ç¿ëÇÏ´Â ÀÌÀ¯´Â ÇÁ·Î±×·¥À» º¸´Ù ´õ ¾Ë±â ½±°Ô ¸¸µé±â À§Çؼ­ÀÌ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀÌ ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ if (day == Sun) ¦¢ ¦¢ weekend = true; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÏ´Â °Í º¸´Ù ÈξÀ ´õ ÀÌÇØÇϱ⠽±´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ if (day == 6) ¦¢ ¦¢ weekend = 1; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ enum su { zero, one, two, three, four, five, six, seven, eight, nine, ten }; void test(void); void main(void) { enum su a; a = two + six; printf(" Two + Six = %d\n",a); test(); } void test(void) { enum su b; b = one + three; printf(" One + Three = %d\n",b); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- Two + Six = 8 One + Three = 4 ¡Ø volatile°ú const Áö½Ã¾î Áö±Ý±îÁö´Â º¯¼ö¸¦ Á¤ÀÇÇÒ ¶§ µ¥ÀÌÅÍ À¯Çü°ú ¸Þ¸ð¸® À¯Çü¸¸ Á¤ÀÇÇß¾úÁö¸¸ ½ÇÁ¦·Î Çϳª°¡ ´õ ÀÖ ´Âµ¥ ±×°ÍÀÌ ¹Ù·Î volatile°ú const Áö½Ã¾î ÀÌ´Ù. ¿ì¼± const¸¦ µ¥ÀÌÅÍ À¯Çü ¾Õ¿¡ ºÙ¿© º¯¼ö¸¦ Á¤ÀÇÇÏ°Ô µÇ¸é ±× º¯¼öÀÇ °ªÀº ¹Ù²Ü ¼ö°¡ ¾ø°Ô µÈ ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ°Ô µÇ¸é ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ const int i = 10; ¦¢ ¦¢ const float pi = 3.141592; /* i¿Í piÀÇ °ªÀº º¯°æÇÒ ¼ö ¾ø´Ù */ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§ µÎ º¯¼öÀÇ °ªÀ» º¯È­½ÃÅ°·Á°í ÇÏ¸é ¿¡·¯°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. ¶ÇÇÑ Æ÷ÀÎÅÍ¿Í °ü·ÃÇؼ­ const Áö½Ã¾î¸¦ »ç¿ëÇÒ ¶§, ´ÙÀ½°ú °°ÀÌ 3°¡Áö·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ ©ç const char *s1 = "Test"; ¦¢ ¦¢ ©è char *const s2 = "Test"; ¦¢ ¦¢ ©é const char *const s3 = "Test"; ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ©çÀÇ °æ¿ì´Â s1ÀÌ °¡¸®Å°´Â °ªÀÌ const, Áï º¯ÇÏÁö ¾Ê´Â °ÍÀÌ µÈ´Ù. µû¶ó¼­ s1ÀÌ °¡¸®Å°´Â ½ºÆ® ¸µ Test"¸¦ º¯°æÇÒ ¼ö ¾øÀ¸¸ç strcpy(s1,"Time");°ú °°Àº °Íµµ »ç¿ëÇÒ ¼ö ¾ø´Ù. ±×·¯³ª s1ÀÇ °ª Àº ¹Ù²Ü ¼ö Àֱ⠶§¹®¿¡ s1 = "New string"°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¹Ý¸é¿¡ ©è´Â s2 ÀÚüÀÇ °ªÀ» º¯°æÇÒ ¼ö ¾øÀ½À» ÀǹÌÇÑ´Ù. µû¶ó¼­ s2 = "New string °ú °°ÀÌ »ç¿ëÇÒ ¼ö´Â ¾øÀ¸³ª s2°¡ °¡¸®Å° ´Â ½ºÆ®¸µÀÇ °ªÀº ¹Ù²Ü ¼ö Àֱ⠶§¹®¿¡ strcpy(s2,"Time");ÀÇ »ç¿ëÀÌ °¡´ÉÇÏ°Ô µÈ´Ù. ¸¶Áö¸·À¸·Î ©éÀº s3ÀÇ °ªµµ ¹Ù²Ü ¼ö ¾ø°í s3ÀÌ °¡¸®Å°´Â ½ºÆ®¸µµµ ¹Ù²Ü ¼ö ¾øÀ½À» ÀǹÌÇÑ´Ù. µû¶ó¼­ s3 = "New string"Àº ¹°·Ð strcpy(s3,"Time")µµ »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù. const Áö½Ã¾î´Â À̸§ ±×´ë·Î °ªÀ» º¯°æÇؼ­´Â ¾ÈµÇ´Â º¯¼ö¸¦ ¼±¾ðÇÒ ¶§ »ç¿ëÇÑ´Ù. ƯÈ÷ ¹è¿­°ú °°ÀÌ ¹Þ´Â ÂÊ¿¡¼­ º¯°æÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅ͸¦ ÀÎÀÚ·Î Àü´ÞÇÏ´Â °æ¿ì ¹Þ´Â ÂÊ¿¡¼­ À̸¦ º¯°æÇÏÁö ¸ø Çϵµ·Ï ¸·°íÀÚ ÇÒ ¶§ const Áö½Ã¾î¸¦ »ç¿ëÇϸé Æí¸®ÇÑ °æ¿ì°¡ ¸¹´Ù. volatile Å°¿öµå´Â Á¶±Ý ƯÀÌÇÑ °ÍÀ¸·Î µÚÀÇ º¯¼ö°¡ ÇÁ·Î±×·¥ÀÇ ¿ÜÀûÀÎ ¿äÀο¡ ÀÇÇØ °ªÀÌ º¯ÇÒ ¼ö ÀÖÀ½À» ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë·Á ÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ¸é ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ volatile int t; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ º¯¼ö tÀÇ °ªÀº ÇÁ·Î±×·¥À» ¼öÇàÇÏ´Â ¾î´À ¼ø°£¿¡³ª ¿ÜÀûÀÎ ¿äÀο¡ ÀÇÇØ °ªÀÌ º¯ÇÒ ¼ö ÀÖÀ½À» ÄÄ ÆÄÀÏ·¯¿¡°Ô ¾Ë·Á ÁÖ¾î, ÄÄÆÄÀÏ·¯°¡ º¯¼ö tÀÇ °ªÀ» »ç¿ëÇÒ ¶§ ÁÖÀÇÇϵµ·Ï ¸¸µç´Ù(ÁÖ·Î Çϵå¿þ¾î¸¦ Á¦¾îÇÏ´Â ÇÁ·Î±×·¥¿¡¼­ ¹ß»ýÇϴµ¥, º¯¼ö°¡ ƯÁ¤ Çϵå¿þ¾îÀÇ ·¹Áö½ºÅͳª Æ÷Æ®¸¦ °¡¸®Å°´Â °æ¿ì). ƯÈ÷ volatile·Î Á¤ÀÇµÈ º¯¼ö´Â ·¹Áö½ºÅÍ¿¡ ÇÒ´çµÇÁö ¾Ê´Â´Ù.