8. Àü󸮱â¿Í ¸ÅÅ©·Î ÇÔ¼ö
- Àü󸮱â¶õ ¿ø½ÃÆÄÀÏÀ» ÄÄÆÄÀÏÇϱâ ÁÁµµ·Ï "°¡°ø"ÇÏ´Â ÀÛ¾÷À̶ó°í ÇÒ ¼ö ÀÖ´Ù. ±¸Ã¼ÀûÀ¸·Î ¸»Çϸé Àü󸮱â´Â ¿ø½ÃÆÄÀÏ ³»ÀÇ ¸ðµç Àü󸮱â Áö½ÃÀÚ¸¦ ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Â CÀÇ ¹®ÀåÀ¸·Î Àü°³ÇÏ´Â ÀÛ¾÷À» ´ã´çÇϰí ÀÖ´Ù.
(1) ¸ÅÅ©·Î Àü°³ : #define°ú #, ## ¿¬»êÀÚ
(2) ¿ÜºÎ ÆÄÀÏ Æ÷ÇÔ : #include
(3) Á¶°ÇºÎ ÄÄÆÄÀÏ : #if, #ifdef, #ifndef,
#else, #elif, #endif
¿Í defined ¿¬»êÀÚ
(4) ±âŸ : #error, #line, #, #undef, #pragma |
#define printexpr1(expr) printf("expr=%d\n",expr)
#define printexpr2(expr) printf(#expr "=%d\n",expr)
#define x_n(x,n) (x##n)
void main()
{
int x1,x2;
printexpr1(3+1);
printexpr2(3+1);
x_n(x, 1)=100;
x_n(x, 2)=200;
printf("%d, %d",x1,x2);
}
<Àü°³µÈ ÈÄ> void main()
{
int x1,x2;
printf("expr=%d\n"3+1); /* ¸ÅÅ©·Î°¡ Àü°³µÇÁö ¾ÊÀ½ */
printf("3+1" "=%d\n",3+1); /* ¸ÅÅ©·Î°¡ Àü°³µÊ */
(x1)=100;
(x2)=200;
printf("%d, %d",x1,x2);
} |
(°á°ú) expr=4 |
(1) #define ¹®Àº ¸ÅÅ©·Î »ó¼ö³ª ¸ÅÅ©·Î ÇÔ¼ö¸¦ Á¤ÀÇÇϴµ¥ »ç¿ëµÈ´Ù.
¸ÅÅ©·Î »ó¼öÀÇ Á¤Àǹæ¹ýÀº ´ÙÀ½°ú °°´Ù.
#define <´ëÇ¥¹®ÀÚ> <¹Ù²î´Â ¹®ÀÚ>¿¹) #define PI 3.14159
#define EOF (-1)
¡¡
ÀÌó·³ #define ¹®À» »ç¿ëÇÑ ¸ÅÅ©·Î »ó¼ö´Â ±â¾ïÇϱâ Èûµç ¼öÄ¡³ª µ¥ÀÌÅ͵éÀ» ¾Ë¾Æº¸±â ½±°Ô ¸¸µé¾î ÁØ´Ù.
(2) ¿ø·¡ ¹®ÀÚ »ó¼ö³ª ¹®ÀÚ¿ »ó¼ö ¾È¿¡¼´Â ¸ÅÅ©·Î°¡ Àü°³µÇÁö ¾Ê´Â´Ù. ±×·¯³ª # ¿¬»êÀÚ¸¦ ½á¼ ¹®ÀÚ¿ ³»¿¡¼ ¸ÅÅ©·Î°¡ Àü°³µÇ´Â °Í°ú °°Àº È¿°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ´Ü, # ¿¬»êÀÚ´Â #define ¹®¿¡¼¸¸ ¾²À̰í, ±×¿Ü¿£ ÀüÇô ¾²Áö ¸øÇÑ´Ù.
Turbo-C´Â ¹®ÀÚ¿ »ó¼ö¸¦ ¾²´Âµ¥ ÀÖ¾î¼ Æ¯º°ÇÑ ±â´ÉÀ» Á¦°øÇϴµ¥, ±× ±â´ÉÀ̶õ ¹®ÀÚ¿ ´ÜÀ§°¡ ¿¬¼ÓÀûÀ¸·Î ³ª¿µÇ¾î ÀÖÀ¸¸é Àüü·Î¼ ÇϳªÀÇ ¹®ÀÚ¿ »ó¼ö·Î ÀνÄÇÑ´Ù´Â °ÍÀÌ´Ù.
¹®ÀÚ¿ ´ÜÀ§ »çÀÌ¿¡ °ø¹é¹®ÀÚ, Åǹ®ÀÚ, °³Ç๮ÀÚ, ÁÖ¼®¹® µîÀÌ À־ »ó°ü¾øÀÌ ÀνÄÇÑ´Ù.
ÀÌÁ¦ À§ÀÇ ¿¹Á¦ ÇÁ·Î±×·¥À» »ìÆìº¸ÀÚ.
printexpr1() ÇÔ¼ö´Â ¹®ÀÚ¿ ³»¿¡¼ ¸ÅÅ©·Î°¡ Àü°³µÇÁö ¾Ê¾ÒÁö¸¸, printexpr2() ÇÔ¼ö´Â # ¿¬»êÀÚ¸¦ ½á¼
(#expr "=%d\n", expr) == ("3+1" "=%d\n", expr) == ("3+1=%d\n", expr)
°ú °°Àº °úÁ¤À» °ÅÃÄ ¹®ÀÚ¿ ³»¿¡¼ ¸ÅÅ©·Î°¡ Àü°³µÇ´Â °Í°ú °°Àº È¿°ú¸¦ ³ªÅ¸³»¾ú´Ù. ½ÇÁ¦·Î # ¿¬»êÀÚ´Â ½Ç¸Å°³ º¯¼ö¸¦ ±×´ë·Î ¹®ÀÚ¿·Î ¸¸µé¾îÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. ±×·¯¹Ç·Î, # ¿¬»êÀÚÀÇ ±â´É°ú Turbo-CÀÇ ¹®ÀÚ¿¿¡ ´ëÇÑ Æ¯º°ÇÑ ±â´ÉÀ» ÀûÀýÈ÷ ÀÌ¿ëÇÏ¿© ¹®ÀÚ¿ ³»¿¡¼ÀÇ ¸ÅÅ©·Î Àü°³¿Í °°Àº ±â´ÉÀ» ±¸ÇöÇÑ °ÍÀÌ´Ù.
(3) Àü󸮱Ⱑ ## ¿¬»êÀÚ¸¦ ¸¸³ª¸é ## ¿¬»êÀÚ¿Í ±× ¾çÂÊ¿¡ ÀÖ´Â °ø¹é¹®ÀÚ¸¦ ¸ðµÎ Á¦°ÅÇØ ¹ö¸°´Ù.
µû¶ó¼ ## ¿¬»êÀÚ ¾çÂÊÀ» ¼·Î °áÇÕÇÏ´Â È¿°ú¸¦ °¡Á®¿Â´Ù.
¡¡
[1] #include
[2] #include "sys/stat.h"
[3] #define HEADER "extgraph.h"
#include HEADER
#include ¹®ÀÇ »ç¿ëÇüÅ 3°¡Áö¸¦ º¸¿´´Ù.
#include ¹®¿¡´Â Çì´õÆÄÀÏÀÇ °æ·Î¸¦ Æ÷ÇÔ½Ãų ¼öµµ ÀÖ°í, ¸ÅÅ©·Î »ó¼ö¸¦ ½á¼ Çì´õ ÆÄÀϸíÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. Æ÷ÇԵǴ ¿ÜºÎÆÄÀÏÀº CÀÇ ¹®¹ý¿¡ ¸Â´Â ³»¿ëÀÇ ÅØ½ºÆ® ÆÄÀÏÀÌ¸é ¾Æ¹«°ÍÀ̳ª °¡´ÉÇÏ´Ù.
¡¡
Á¶°ÇºÎ ÄÄÆÄÀÏÀ̶õ, ¸» ±×´ë·Î ƯÁ¤ÇÑ Á¶°ÇÀÌ ¼º¸³µÉ ¶§³ª ¶Ç´Â ¼º¸³µÇÁö ¾ÊÀ» ¶§¿¡¸¸ ÁöÁ¤µÈ ¹üÀ§³»ÀÇ ¹®ÀåÀ» ÄÄÆÄÀÏÇϰųª ¶Ç´Â ±×³É ¹«½ÃÇϰí ÄÄÆÄÀÏÇÏÁö ¾Ê´Â °ÍÀ» ¸»ÇÑ´Ù.
Á¶°ÇºÎ ÄÄÆÄÀÏÀÇ ÁÖ¸ñÀûÀº ÇÁ·Î±×·¥ÀÇ È£È¯¼ºÀ» ³ôÀÌ´Â µ¥ ÀÖ´Ù. Á¶°ÇºÎ ÄÄÆÄÀÏÀÇ ½Ç·Ê´Â Ç¥ÁØ Çì´õÆÄÀÏ¿¡¼ °¡Àå ¸¹ÀÌ Ã£¾Æº¼ ¼ö ÀÖ´Ù.
Á¶°ÇºÎ ÄÄÆÄÀÏÀ» À§ÇÑ Àü󸮱â Áö½ÃÀÚ´Â #if, #ifdef, #ifndef, #else, #elif, #endif µî ¸ðµÎ 6°¡Áö°¡ ÀÖ°í, ±×¹Û¿¡ Ưº°È÷ defined ¶ó´Â Àü󸮱â Áö½ÃÀÚ°¡ Áö¿øµÈ´Ù.
void main()
{
#if defined(__TINY__) /* TINY ¸Þ¸ð¸® ¸ðµ¨ÀÏ °æ¿ì ´ÙÀ½ ÇÑ ÁÙ¸¸ ÄÄÆÄÀÏ */
printf("This is TINY memory model\n");
#elif defined(__SMALL__) /* SMALL ¸Þ¸ð¸® ¸ðµ¨ÀÏ °æ¿ì ´ÙÀ½ ÇÑ ÁÙ¸¸ ÄÄÆÄÀÏ */
printf("This is SMALL memory model\n");
#else /* ±× ¿ÜÀÇ ¸Þ¸ð¸® ¸ðµ¨ÀÏ °æ¿ì ´ÙÀ½ ÇÑ ÁÙÀ» ÄÄÆÄÀÏ */
printf("Other memory model\n");
#endif
}
À§ÀÇ ¿¹Á¦¸¦ »ìÆìº¸ÀÚ. ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î µÇ¾îÀÖ´Ù. À̰ÍÀº if-else ¹®°ú ºñ½ÁÇØ º¸ÀÎ ´Ù. »ç½Ç ÇÏ´Â ¿ªÇÒÀº ºñ½ÁÇÏ´Ù. #elif ¹®°ú #else ¹®Àº »ý·«°¡´ÉÇÏ´Ù.
#if »ó¼ö¼ö½Ä1
¹®Àå1
#elif »ó¼ö¼ö½Ä2
¹®Àå2
#else ¹®Àå3
#endif |
#if ¹®Àº »ó¼ö¼ö½Ä1ÀÌ ÂüÀÌ¸é ¹®Àå1À» ÄÄÆÄÀÏÇϰí, °ÅÁþÀÌ¸é ¹®Àå1À» ÄÄÆÄÀÏÇÏÁö ¾Ê´Â´Ù.
#elif ¹®Àº »ó¼ö¼ö½Ä1ÀÌ °ÅÁþÀÎ °æ¿ì »ó¼ö¼ö½Ä2¸¦ Æò°¡ÇÏ¿© ÂüÀÌ¸é ¹®Àå2¸¦ ÄÄÆÄÀÏÇϰí, °ÅÁþÀÌ¸é ¹®Àå2¸¦ ÄÄÆÄÀÏÇÏÁö ¾Ê´Â´Ù.
#else ¹®Àº »ó¼ö¼ö½Ä1°ú »ó¼ö¼ö½Ä2°¡ ¸ðµÎ °ÅÁþÀÎ °æ¿ì ¹®Àå3À» ÄÄÆÄÀÏÇÑ´Ù. ¸¸¾à »ó¼ö¼ö½Ä1À̳ª »ó¼ö¼ö½Ä2 Áß ¾î´À Çϳª¶óµµ ÂüÀÌ¸é ¹®Àå3Àº ÄÄÆÄÀϵÇÁö ¾Ê´Â´Ù.
#endif ¹®Àº #if ¹®ÀÇ ³¡À» ³ªÅ¸³»¸ç, ºü¶ß¸®¸é ¾ÈµÈ´Ù.
defined ¿¬»êÀÚ´Â defined (¸ÅÅ©·ÎÇü) ó·³ ¾²À̴µ¥, ¸ÅÅ©·Î°¡ Á¤ÀǵǾî ÀÖÀ¸¸é ³í¸®Àû Âü(°ªÀº 1)À¸·Î, Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸é ³í¸®Àû °ÅÁþ(°ªÀº 0)À¸·Î Æò°¡ÇÑ´Ù.
´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ. #ifndef ¹®À» »ç¿ëÇÏ¿´´Ù.
#ifndef TRUE |
ifndef ´Â IF Not DEFine ÀÇ ¾àÀÚÀ̰í, ifdef ´Â IF DEFine ÀÇ ¾àÀÚÀÌ´Ù.
TRUE °°Àº ÀÏ»óÀûÀÎ define ¹®Àº ´Ù¸¥ °÷¿¡¼ »ç¿ëµÇ¾úÀ» ¼öµµ ÀÖ´Ù. °°Àº defineÀ» µÎ ¹ø ÇÏ°Ô µÇ¸é ¿¡·¯°¡ ³ª¹Ç·Î, TRUE°¡ defineµÇÁö ¾Ê¾ÒÀ» °æ¿ì¿¡¸¸ defineÀ» ÇÏ°Ô ÇÑ´Ù.
´ÙÀ½Àº ³í¸®ÀûÀ¸·Î µ¿ÀÏÇÏ´Ù.
#ifdef MACRO == #if defined (MACRO)
#ifndef MACRO == #if !defined (MACRO)
´ÙÀ½ÀÇ ¿¹Á¦´Â #ifdef ¹®À» ÀÌ¿ëÇÏ¿© Á¶°ÇºÎ ÄÄÆÄÀÏÀ» ÇÔÀ¸·Î¼, µð¹ö±ë½Ã À¯¿ëÇÏ´Ù´Â ´ÜÀûÀÎ ¿¹¸¦ º¸À̰í ÀÖ´Ù.
#define DEBUG
void func(int a, int b)
{
int c;
c=(a++)+(b++);
#ifdef DEBUG
printf("i=%d, j=%d, c=%d\n",a,b,c);
#endif
}
void main(void)
{
int i,j;
#ifdef DEBUG
printf("i=%d, j=%d\n", i, j);
#endif
i=5; j=8;
func(i, j);
}
DEBUG ¶ó´Â ¸ÅÅ©·Î »ó¼ö°¡ Á¤ÀǵǾúÀ» °æ¿ì¿¡¸¸ ÇÔ¼ö¿¡¼ °¢ º¯¼öµéÀÇ °ªÀ» Ãâ·ÂÇÑ´Ù. ÀÌ·¯ÇÑ ¹æ¹ýÀº º¯¼öµéÀÇ º¯È¸¦ ÃßÀûÇÒ ¼ö ÀÖ°Ô ÇØÁÖ°í, ¹ö±×¸¦ ¸ðµÎ ÀâÀº ÈÄ ¸Ç À§ÀÇ #define DEBUG ¶ó´Â ÁÙÀ» ¾ø¾ÖÁÜÀ¸·Î½á Áß°£Áß°£¿¡ µð¹ö±×¸¦ À§ÇØ Á¸ÀçÇß´ø ºÎºÐµéÀº ÄÄÆÄÀϵÇÁö ¾Ê°í ½ÇÇàÆÄÀÏÀÌ ¸¸µé¾îÁø´Ù.
¹°·Ð, ÅëÇÕ È¯°æÀÇ watch âÀ» ÀÌ¿ëÇϸé ÀÌ·¯ÇÑ ±â´ÉÀÌ ÇÊ¿ä¾ø´Ù.
¡¡
(1) #error
- »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù. ¿¡·¯¸Þ½ÃÁö¿¡ Å«µû¿ÈÇ¥´Â ¾²Áö ¾Ê´Â´Ù.
#error ¿¡·¯¸Þ½ÃÁö
#ifndef(__SMALL__) |
Àü󸮱Ⱑ #error ¹®À» ¸¸³ª¸é ±× Áï½Ã ÄÄÆÄÀÏÀ» Áß´ÜÇϰí, »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ¿¡·¯¸Þ½ÃÁö¸¦ ³»º¸³»´Âµ¥, Àü󸮱â´Â #error ¹® ´ÙÀ½ÀÇ °ø¹éÀ» Á¦¿ÜÇÑ Ã¹¹®ÀÚºÎÅÍ ¿¡·¯¸Þ½ÃÁö·Î ÀνÄÇÑ´Ù.
(2) #line
- »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù.
#line ¶óÀιøÈ£ "ÆÄÀϸí" ¶Ç´Â #line ¶óÀιøÈ£
#line ¹®Àº ±âÁ¤ÀÇ ¸ÅÅ©·Î»ó¼ö __LINE__ °ú __FILE__ À» °¢°¢ ¶óÀιøÈ£¿Í ÆÄÀϸíÀ¸·Î ¹Ù²Û´Ù. ÆÄÀϸíÀ» »ý·«Çϸé __FILE__ Àº ¹Ù²îÁö ¾Ê´Â´Ù.
#define MACRO
#ifdef MACRO
#line 0 "direct.c" /* MACRO °¡ Á¤ÀǵǾî ÀÖÀ»¶§¸¸ ÄÄÆÄÀÏµÊ */
#endif
void main(void)
{
printf("Line : %d, Filename : [%s]\n",__LINE__,__FILE__);
#line 100 "main.c"
printf("Line : %d, Filename : [%s]\n",__LINE__,__FILE__);
}
(¿¹»ó °á°ú)
Line : 5, Filename : [DIRECT.C]
Line : 101, Filename : [MAIN.C]
(½ÇÁ¦ °á°ú)
Line : 8, Filename : [C-TEST4.C]
Line : 10, Filename : [C-TEST4.C]
(¼³¸í)
#line, __LINE__, __FILE__ ÀÇ »ç¿ë¹ýÀ» º¸ÀÎ ¿¹ÀÌ´Ù.
ÀÌ ÆÄÀÏÀÇ À̸§Àº C-TEST4.C ÀÌ´Ù.
½ÇÁ¦·Î °á°ú´Â ¿¹»ó°ú ÀüÇô ´Ù¸£°Ô ³ª¿Ô´Ù.
#line Áö½ÃÀÚ°¡ ÀüÇô È¿°ú°¡ ¾ø´Â °ÍÀÌ´Ù.
¾Æ¸¶ Turbo-C 2.0ÀÇ ¹ö±×ÀÎ µíÇÏ´Ù.
(3) ³Î Áö½ÃÀÚ #
- ³Î Áö½ÃÀÚ # ´Â ±¸µÎÁ¡ # °¡ ´Üµ¶À¸·Î ¾²ÀÎ °ÍÀ̸ç, ¾Æ¹«°Íµµ ÇÏÁö¾Ê°í Àü󸮱⿡ ÀÇÇØ¼ ±×³É ¹«½ÃµÈ´Ù. ³Î Áö½ÃÀÚ°¡ ¾²ÀÎ °÷Àº ¶óÀο¡ Æ÷ÇÔµÇÁö ¾Ê¾Æ __LINE__ »ó¼ö¿¡ ¶óÀÎÀ¸·Î ÀνĵÇÁö ¾Ê´Â´Ù.
(4) #undef
- #undef ´Â #define ¹®¿¡ ÀÇÇØ Á¤ÀÇµÈ ¸ÅÅ©·Î¸¦ Ãë¼ÒÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù.
(5) #pragma
- ÄÄÆÄÀϽà °¢Á¾ ¿É¼ÇÀ» ÁÖ´Â ±â´ÉÀ» ÇÏ´Â °ÍÀε¥, ÀÚ¼¼ÇÑ ³»¿ëÀº User's Guide³ª Turbo C Programmer's GuideÀÇ ³»¿ëÀ» Âü°íÇÏ¸é µÈ´Ù.
- ÀÌ ¸í·É¾î´Â ¸í·ÉÇà ÄÄÆÄÀÏ·¯ ¿É¼Ç Áß -B ¿É¼Ç°ú °°Àº ±â´ÉÀ» Çϴµ¥, ÄÄÆÄÀÏ·¯¿¡°Ô ¼Ò½º ÇÁ·Î±×·¥¿¡ ÀζóÀÎ ¾î¼Àºí¸®°¡ ÀÖ´Ù´Â °ÍÀ» ¾Ë·ÁÁÖ´Â °ÍÀÌ´Ù.
ÀζóÀÎ ¾î¼Àºí¸®¶õ C ¼Ò½º ÇÁ·Î±×·¥ ¾È¿¡ ÀϺΠ·çƾÀ» ºü¸¥ ¼Óµµ·Î ó¸®Çϱâ À§ÇØ ¾î¼Àºí¸® Äڵ带 Á÷Á¢ »ç¿ëÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù.
ÀÌ¿Í °°Àº °æ¿ì ÆÄÀÏÀÇ ¼±µÎ¿¡ #pragma inline °ú °°Àº ¶óÀÎÀ» µÒÀ¸·Î½á ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë¸± ¼ö ÀÖ´Ù.
Turbo-C ÅëÇÕȯ°æ ³»¿¡¼´Â ÀζóÀÎ ¾î¼Àºí¸®°¡ µé¾î°£ ¼Ò½º´Â ÄÄÆÄÀÏ ÇÒ ¼ö ¾øÀ¸¸ç, ¸í·ÉÇà ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏÀ» ÇØ¾ß ÇÑ´Ù. C++¿¡¼´Â ÅëÇÕȯ°æ ³»¿¡¼µµ ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù.
- À̰ÍÀº ÄÄÆÄÀϽà ¹ß»ýÇÏ´Â °æ°í ¿¡·¯(warning error)¸¦ Á¦¾îÇÏ´Â Áö½ÃÀÚÀÌ´Ù. ±× Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
#pragma warn +xxx
#pragma warn -xxx
#pragma warn .xxx
- ÀÌ´Â huge ÇÔ¼ö°¡ ½ÇÇàµÇ¾úÀ» ¶§, ¾î¶² ·¹Áö½ºÅÍÀÇ °ªµµ ¹Ù²îÁö ¾Ê°Ô Çϱâ À§ÇÑ °ÍÀÌ´Ù. À̰ÍÀº ¶§¶§·Î ¾î¼Àºí¸® ¾ð¾î ÄÚµå¿Í ÀÎÅÍÆäÀ̽º ÇϰíÀÚ ÇÒ ¶§ ¿ä±¸µÈ´Ù. ÀÌ Áö½ÃÀÚ´Â ÇÔ¼öÀÇ Á¤ÀǺκР¹Ù·Î À§¿¡ ¼±¾ðÇØ µÎ¾î¾ß ÇÑ´Ù.
- Turbo-C 2.0 ¿¡´Â ´ÙÀ½°ú °°Àº 15°³ÀÇ ±âÁ¤ÀÇ ¸ÅÅ©·Î »ó¼ö°¡ ÀÖ´Ù. ±âÁ¤ÀÇ ¸ÅÅ©·Î
»ó¼ö´Â ÇÁ·Î±×·¡¸Ó°¡ Á÷Á¢ #define¹®À¸·Î Á¤ÀÇÇØÁÖÁö ¾Ê¾Æµµ ÀÌ¹Ì Á¤ÀǵǾî ÀÖ´Â
¸ÅÅ©·Î »ó¼öµéÀÌ´Ù.
ÀÌ ¸ÅÅ©·Î »ó¼öµéÀº #define¹®À̳ª #undef¹®¿¡ ¾²ÀÏ ¼ö ¾ø´Ù. µû¶ó¼ ÇÁ·Î±×·¥ ³»¿¡¼
ÂüÁ¶¸¸ÀÌ °¡´ÉÇÏ°í ¼öÁ¤Àº ºÒ°¡´ÉÇÏ´Ù. ´Ù¸¸ __FILE__ °ú __LINE__ ¸¸Àº #line¹®À»
½á¼ º¯°æÇÒ ¼ö ÀÖ´Ù. (Turbo-C 2.0¿¡¼´Â ¹ö±×·Î ÀÎÇØ º¯°æÀÌ µÇÁö ¾Ê´Â´Ù.)
1) __LINE__ : Àü󸮱Ⱑ ¼öÇàÇÏ´Â ÇöÀç ¶óÀÎÀÇ ¹øÈ£
2) __FILE__ : Àü󸮱Ⱑ ¼öÇàÇÏ´Â ÆÄÀÏÀÇ À̸§
3) __DATE__ : Àü󸮱Ⱑ ¼öÇàÇÏ´Â ÆÄÀÏÀÌ ¸¸µé¾îÁø ³¯Â¥
4) __TIME__ : Àü󸮱Ⱑ ¼öÇàÇÏ´Â ÆÄÀÏÀÌ ¸¸µé¾îÁø ½Ã°£
5) __STDC__ : ÄÄÆÄÀϽà ANSI ¿É¼ÇÀ» ÁÖ¸é ÀÌ »ó¼ö´Â 1·Î Á¤Àǵǰí,
±×·¸Áö ¾ÊÀ¸¸é Á¤ÀǵÇÁö ¾Ê´Â´Ù.
6) __TURBOC__ : Turbo-CÀÇ ¹öÀüÀ» 16Áø¼ö·Î ³ªÅ¸³½´Ù.
Turbo-C 2.0 ¿¡¼´Â ¹ö±×·Î ÀÎÇØ 0x18d ¶ó´Â ÀÌ»óÇÑ ¼ö°¡
Ãâ·ÂµÈ´Ù.
7) __PASCAL__ : ÄÄÆÄÀϽà -p ¿É¼ÇÀ» ÁÖ¸é 1·Î Á¤ÀǵǸç, ±×·¸Áö ¾ÊÀ¸¸é
Á¤ÀǵÇÁö ¾Ê´Â´Ù.
8) __CDECL__ : __PASCAL__ °ú ¹Ý´ë·Î ÄÄÆÄÀϽà -p ¿É¼ÇÀ» ÁÖÁö ¾ÊÀ¸¸é
1·Î Á¤ÀǵǸç, ±×·¸Áö ¾ÊÀ¸¸é Á¤ÀǵÇÁö ¾Ê´Â´Ù.
9) __MSDOS__ : ¸ðµç ÄÄÆÄÀÏ¿¡ ´ëÇØ¼ 1À̶ó´Â »ó¼ö¸¦ Á¦°ø
10) __TINY__ --+
11) __SMALL__ | ÇöÀçÀÇ ¸Þ¸ð¸® ¸ðµ¨À» Á¤ÀÇÇÏ´Â »ó¼ö
12) __MEDIUM__ | ¸Þ¸ð¸® ¸ðµ¨¿¡ µû¶ó ÇϳªÀÇ »ó¼ö¸¸ÀÌ 1·Î Á¤ÀǵÊ
13) __COMPACT__ |
14) __LARGE__ |
15) __HUGE__ ---+
¡¡
8-3. ¸ÅÅ©·Î ÇÔ¼ö
- #define¹®À» ÀÌ¿ëÇÏ¿© ÇÔ¼ö¿Í °°Àº ±â´ÉÀ» ÇÏ´Â °ÍÀ» ¸¸µé ¼ö ÀÖ´Ù. ÀÌ·¸°Ô 'ÇÔ¼ö¿Í °°Àº ±â´ÉÀ» ÇÏ´Â °Í'À̶ó°í ¸»ÇÏ´Â ÀÌÀ¯´Â ¾ö°ÝÈ÷ ¸»Çؼ, ¸ÅÅ©·Î ÇÔ¼ö´Â ÇÔ¼ö°¡ ¾Æ´Ï°í ´ÜÁö ÇÔ¼ö¿Í ºñ½ÁÇÏ°Ô »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù.
´ÙÀ½Àº ¸ÅÅ©·Î ÇÔ¼öÀÇ ÀÛ¼º ¿¹ÀÌ´Ù.
#define MAX(x,y) ((x)>(y) ? (x) : (y)) /* ÃÖ´ë°ªÀ» ±¸ÇÏ´Â ¸ÅÅ©·Î ÇÔ¼ö */
#define ABS(x) ((x)<0 ? -(x) : (x)) /* Àý´ë°ªÀ» ±¸ÇÏ´Â ¸ÅÅ©·Î ÇÔ¼ö */
#define SQR(x) ((x)*(x)) /* Á¦°ö°ªÀ» ±¸ÇÏ´Â ¸ÅÅ©·Î ÇÔ¼ö */
#define UPCASE(c) (( (c)>='a' && (c)<='z') ? (c)-('a'-'A') : (c) )
/* ¼Ò¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù´Â ¸ÅÅ©·Î ÇÔ¼ö */
#define LOCASE(c) (( (c)>='A' && (c)<='Z') ? (c)+('a'-'A') : (c) )
/* ´ë¹®ÀÚ¸¦ ¼Ò¹®ÀÚ·Î ¹Ù²Ù´Â ¸ÅÅ©·Î ÇÔ¼ö */
- ¾Æ½ºÅ° ÄÚµå »ó¿¡¼ ¹®ÀÚÀÇ À§Ä¡¸¦ º¸¸é ´ë¹®ÀÚ°¡ ¸ÕÀú ÀÖ°í, ±× µÚ¿¡ ¿¬¼ÓÀûÀ¸·Î ¼Ò¹®ÀÚ°¡ ³ª¿µÇ¾î ÀÖ´Ù. ´ë¹®ÀÚ¸¦ ¼Ò¹®ÀÚ·Î, ¶Ç´Â ¼Ò¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù´Â °ÍÀº ´ÙÀ½ ¿¬»ê¿¡ ÀÇÇØ¼ ÇØ°áÇÒ ¼ö ÀÖ´Ù.
* ¼Ò¹®ÀÚ - ´ë¹®ÀÚ : (¼Ò¹®ÀÚ) - ('a'-'A')
* ´ë¹®ÀÚ - ¼Ò¹®ÀÚ : (´ë¹®ÀÚ) + ('a'-'A')
ÀÌ ¿¬»êÀÇ ¿ø¸®´Â ¼Ò¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù´Â °æ¿ì ±× ¼Ò¹®ÀÚ¿¡, ¼Ò¹®ÀÚ¿Í ´ë¹®ÀÚÀÇ Â÷ÀÌ¿¡ ÇØ´çÇÏ´Â ¼ö¸¦ »©ÁÜÀ¸·Î½á ´ë¹®ÀÚ·Î ¸¸µé ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.
¿Ö³ÄÇÏ¸é ¾Æ½ºÅ° ÄÚµå´Â µÚ·Î °¥¼ö·Î ¼ö°¡ Ä¿Áö°í, ´ë¹®ÀÚº¸´Ù ¼Ò¹®ÀÚ°¡ µÚÂÊ¿¡ À§Ä¡Çϱ⠶§¹®¿¡ ±× Â÷À̸¸ÅÀÇ ¼ö¸¦ »©ÁÖ¸é ´ë¹®ÀÚÀÇ ¾Æ½ºÅ° Äڵ尡 µÇ±â ¶§¹®ÀÌ´Ù.
´ÙÀ½Àº À̰ÍÀ» ÀÌ¿ëÇØ¼ ½ÇÁ¦·Î ÀÛ¼ºµÈ ¸ÅÅ©·Î ÇÔ¼öÀÌ´Ù.
#define UPCASE(c) (c)-('a'-'A')
#define LOCASE(c) (c)+('a'-'A')
±×·±µ¥, ¸¸¾à ÀԷµǴ ¹®ÀÚ°¡ ´ë¹®ÀÚµµ ¼Ò¹®ÀÚµµ ¾Æ´Ñ °æ¿ì¿£ ¾û¶×ÇÑ °á°ú°¡ ³ª¿À°Ô µÈ´Ù.
±×·¯¹Ç·Î ±×·¯ÇÑ °æ¿ì¿¡´Â ±× ¹®ÀÚ¸¦ ±×´ë·Î Ãâ·ÂÇÏ°Ô ¸¸µé¸é µÈ´Ù. ±× °á°ú ¿ÏÀüÇÏ°Ô ¸¸µé¾îÁø ¸ÅÅ©·Î ÇÔ¼ö´Â À§ÀÇ ¸ÅÅ©·Î ÇÔ¼öÀÇ ¿¹¿¡ ³ª¿ÍÀÖ´Ù.
B) ¸ÅÅ©·Î ÇÔ¼ö Á¤Àǽà ÁÖÀÇÇÒ Á¡
¨ç ¸ÅÅ©·Î ÇÔ¼ö¿¡ »ç¿ëµÇ´Â ¸ðµç ÀÎÀÚ¿¡´Â ¹Ýµå½Ã °ýÈ£¸¦ ÇØµÎ´Â °ÍÀÌ ¾ÈÀüÇÑ Á¤Àǹæ¹ýÀÌ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ ¸ÅÅ©·Î ÇÔ¼ö¸¦ º¸ÀÚ.
ÀÌ °æ¿ì °ýÈ£¸¦ »ç¿ëÇÏÁö ¾Ê°í Á¤ÀÇÇÑ °ÍÀ¸·Î, ºÎÀÛ¿ëÀÌ ¹ß»ýÇÑ °ÍÀÌ´Ù. À§ ¸ÅÅ©·Î ÇÔ¼öÀÇ Àü°³ Èĸ¦ º¸¸é ¾Ë°ÚÁö¸¸, °á°ú´Â ¿¹»óÇß´ø 21ÀÌ ¾Æ´Ï¶ó 11ÀÌ ³ª¿Â´Ù. ÀÌ·¯ÇÑ ºÎÀÛ¿ëÀ» ¹æÁöÇϱâ À§ÇØ °¡´ÉÇÏ¸é ¸ðµç ÀÎÀÚ¿¡ °ýÈ£¸¦ ÇØµÎ´Â °ÍÀÌ ÁÁ´Ù.
¨è ¸ÅÅ©·Î ÇÔ¼ö ³»¿¡¼´Â ´ÜÀÏ ¿¬»êÀÚÀÎ Áõ°¡ ¿¬»êÀÚ(++) ¶Ç´Â °¨¼Ò ¿¬»êÀÚ¸¦ »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ.
#define SQR(x) ((x)*(x))void main()
{
int i=2;
printf("%d\n", SQR(++i));
}
ÀÌ·¸°Ô ¸ÅÅ©·Î ÇÔ¼ö SQR()À» Á¤ÀÇÇϰí, ¸Å°³º¯¼ö·Î ++i ¸¦ ÁÖ¾úÀ» ¶§ Àü°³ °á°ú´Â ´ÙÀ½°ú °°´Ù.
¡¡
printf("%d\n", (++i)*(++i));
¡¡
À̸¦ º¸¸é ¾Ë°ÚÁö¸¸ Áõ°¡ ¿¬»êÀÚ°¡ ÇÑ ¹®Àå ¾È¿¡¼ µ¿½Ã¿¡ ¾²¿´´Ù.
¿øÇÏ´Â ³»¿ëÀº i °¡ 1Áõ°¡ÇÏ´Â °ÍÀÌÁö¸¸ ½ÇÁ¦·Î´Â 2°¡ Áõ°¡ÇÏ°Ô µÈ °ÍÀÌ´Ù.
½ÇÁ¦·Î °á°ú°ªÀº 3*4==12 °¡ ³ª¿Â´Ù.
¡¡
C) ¸ÅÅ©·Î ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯
- ¸ÅÅ©·Î ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â °£´ÜÇÑ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§ ±»ÀÌ ½ÇÁ¦ÀÇ ÇÔ¼ö¸¦ ¸¸µéÁö ¾Ê°í, ¸ÅÅ©·Î ÇÔ¼ö·Î ¸¸µé¾î »ç¿ëÇÔÀ¸·Î½á º¸´Ù °£´ÜÇÑ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¹°·Ð º¹ÀâÇÑ ±â´ÉÀ» °¡Áö´Â ÇÔ¼öµéÀº ¸ÅÅ©·Î ÇÔ¼ö·Î ¸¸µé ¼ö ¾ø°ÚÁö¸¸, °£´ÜÇÑ ¿¬»êÀ» ÇÏ´Â Á¤µµÀÇ ÇÔ¼ö´Â ¸ÅÅ©·Î ÇÔ¼ö·Î ÀÛ¼ºÇÏ´Â °ÍÀÌ ÁÁ´Ù. °¡·É °£´ÜÇÑ ¿¬»êÀ» ÇÏ´Â ÇÔ¼ö°¡ ±²ÀåÈ÷ ºó¹øÇÏ°Ô ÇÁ·Î±×·¥ °÷°÷¿¡¼ È£ÃâµÈ´Ù°í »ý°¢ÇØ º¸ÀÚ. ÇÔ¼ö°¡ È£ÃâµÉ ¶§ »ý±â´Â ¿©·¯ °¡Áö ÀÛ¾÷µé(¿¹¸¦ µé¾î ÀÚµ¿º¯¼ö¸¦ ¸¸µé¾ú´Ù ¾ø¾Ö´Â µîÀÇ ÀÛ¾÷) ¶§¹®¿¡ »ó´çÈ÷ ¸¹Àº ½Ã°£À» ¼ÒºñÇÏ°Ô µÈ´Ù. ƯÈ÷ ¹Ýº¹¹® ¾È¿¡¼ ±× ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ¸é, ±× ½Ã°£Àº ´õ¿í ±æ¾îÁø´Ù. ÇÏÁö¸¸ ÀÌ·± ÇÔ¼ö¸¦ ¸ÅÅ©·Î ÇÔ¼ö·Î ¹Ù²Ù°Ô µÇ¸é, ½ÇÁ¦ÀûÀ¸·Î ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ÀÏÀÌ ¾ø¾î¼ ºü¸¥ ½Ã°£¿¡ ÀÛ¾÷À» ó¸®ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
¹°·Ð ´ÜÁ¡µµ Àִµ¥, ÇÔ¼ö´Â ÇϳªÀÇ ·çƾÀ» °è¼Ó ºÒ·¯¼ »ç¿ëÇÏÁö¸¸ ¸ÅÅ©·Î ÇÔ¼ö´Â ¸ðµÎ ġȯÀÌ µÇ±â ¶§¹®¿¡ ½ÇÇà ÆÄÀÏÀÇ Å©±â°¡ Ä¿Áú ¼öµµ ÀÖ´Ù.
¨ç Áߺ¹µÇ´Â ¼ö½ÄÀ» ¸ÅÅ©·Î ÇÔ¼ö·Î °£°áÇÏ°Ô ±â¼ú
- ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Ùº¸¸é ƯÁ¤ ¼ö½ÄÀÌ °è¼ÓÇØ¼ ¾²ÀÌ´Â °æ¿ì°¡ Àִµ¥, À̰ÍÀ» µû·Î ÇÔ¼ö·Î ¸¸µé¾î ¾²ÀÚ´Ï ½ÇÇà¼Óµµ°¡ ¹®Á¦µÉ °Í °°°í, ±×´ë·Î ¼ö½ÄÀ¸·Î ¾²ÀÚ´Ï ÇÁ·Î±×·¥ÀÌ ³Ê¹« º¹ÀâÇØ Áú °Í °°Àº »óȲ¿¡¼, ÀÌ·¯ÇÑ ¼ö½ÄÀ» ¸ÅÅ©·Î ÇÔ¼ö·Î ġȯÇÏ¸é ¼Ò½º°¡ ÆÇµ¶Çϱ⠽±°í °£°áÇØÁø´Ù.
¨è Ç¥ÁØ ¶óÀ̺귯¸® ÇÔ¼öÀÇ Æ¯Á¤ ½Ç¸Å°³º¯¼ö¸¦ ƯÁ¤ °ªÀ¸·Î ÁöÁ¤ÇÑ °æ¿ì
- ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Ù º¸¸é Ç¥ÁØ ¶óÀ̺귯¸® ÇÔ¼öÀÇ Æ¯Á¤ÇÑ ¸Å°³º¯¼ö¸¦ Ç×»ó Æ¯Á¤ÇÑ °ªÀ¸·Î ÁöÁ¤ÇÏ¿© ¾²´Â °æ¿ì°¡ ¸¹´Ù. ¿¹¸¦ µé¾î HGC¿¡¼´Â floodfill() ÇÔ¼öÀÇ 3¹øÂ° ¸Å°³º¯¼ö°¡ Ç×»ó 1ÀÏ ¼ö ¹Û¿¡ ¾ø´Ù. ÀÌó·³ floodfill(x, y, 1) °ú °°ÀÌ ¸Å¹ø 1À̶ó´Â °ªÀ» ÁöÁ¤ÇØ ÁֱⰡ ¹ø°Å·¯¿ï ¶§ ¸ÅÅ©·Î ÇÔ¼ö¸¦ ¾²¸é µÈ´Ù.
#define paint(x, y) floodfill(x, y, 1)>
¨é ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀ» Á¦ÇÑÇÏ°í ½ÍÁö ¾ÊÀ» ¶§
- ½ÇÁ¦ÇÔ¼ö´Â ½Ç¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÌ Á¦ÇѵǾî ÀÖÁö¸¸, ¸ÅÅ©·Î ÇÔ¼ö´Â µ¥ÀÌÅÍÇüÀÌ Á¦ÇѵǾî ÀÖÁö ¾ÊÀ¸¹Ç·Î ¸ðµç µ¥ÀÌÅÍÇüÀ» ¸Å°³º¯¼ö·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
typedef¹®Àº »õ·Î¿î ÇüÀ» Á¤ÀÇÇϴµ¥ ¾²ÀδÙ. ¿¹¸¦ µé¾î unsigned char ÇüÀº Çü À̸§ÀÌ ±æ¾î¼ ºÒÆíÇÏ´Ù°í ´À²¸Áú ¼öµµ ÀÖ´Ù. ÀÌ·² ¶§ typedef¹®À» »ç¿ëÇØ¼ byteÇüÀ̶ó°í °£´ÜÈ÷ Á¤ÀÇÇØ ¹ö¸®¸é Æí¸®ÇÏ´Ù. ¾Æ·¡¿¡ typedef¹®ÀÇ ¼±¾ðÇü½ÄÀ» ¼³¸íÇÏ¿´´Ù.
typedef <¿©·¯°¡Áö ÀÚ·áÇü> <´ëÇ¥ÇÏ´Â ÀÚ·áÇü> * <¿©·¯°¡Áö ÀÚ·áÇü> Àº Turbo-C°¡ Áö¿øÇÏ´Â ¸ðµç ÀÚ·áÇüÀÌ ¿Ã ¼ö ÀÖ´Ù. * <´ëÇ¥ÇÏ´Â ÀÚ·áÇü> Àº »ç¿ëÀÚ°¡ ÀÓÀÇ·Î Á¤Çϰí, ³ªÁß¿¡ º¯¼ö¸¦ Á¤ÀÇÇÒ ¶§ »ç¿ëÇÑ´Ù. * ´ÙÀ½Àº ÀÚÁÖ ¾²ÀÌ´Â ÇüÁ¤ÀǵéÀÌ´Ù.
|
typedef¹®À» ¸¶±¸ ³²¿ëÇÏ¸é ¿ÀÈ÷·Á µ¥ÀÌÅÍÇüÀÇ È¥µ¿À» °¡Á®¿À¹Ç·Î, µÇµµ·Ï ´ë´ÜÈ÷ º¹ÀâÇÑ µ¥ÀÌÅÍÇü(¿°ÅÇü, ±¸Á¶Ã¼Çü, °ø¿ëüÇü °°Àº °æ¿ì)¿¡¸¸ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.
¡¡
ÀÌ ±Û óÀ½ºÎºÐÀÇ µ¥ÀÌÅÍÇüÀ» º¸¸é ¼³¸í¾øÀÌ ³Ñ¾î°£ ¿°ÅÇüÀÌ ÀÖ°í, »ó¼ö¿¡ º¸¸é ¿°Å»ó¼ö°¡ ÀÖ´Ù. ¿°ÅÇü(enumerated type)Àº ±×·¯ÇÑ ¿°Å»ó¼ö(==¿°Å¸â¹ö)µéÀÇ ¸ðÀÓÀ̶ó°í º¼ ¼ö ÀÖ´Ù. ¿°ÅÇüÀ» enumÇüÀ̶ó°í ºÎ¸£±âµµ ÇÑ´Ù.
¿°ÅÇü »ó¼öÀÇ ¼±¾ð¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.
enum {¸â¹ö1, ¸â¹ö2, . . . } ¿°ÅÇü º¯¼ö1, ¿°ÅÇü º¯¼ö2, . . .
À§¿¡¼ ¸â¹ö´Â ¹®¸Æ¿¡ µû¶ó ¿°Å¸â¹ö¶ó°í ºÒ¸®±âµµ Çϰí, ¿°Å»ó¼ö·Î ºÒ¸®±âµµ ÇÑ´Ù. ¿°Å¸â¹ö¸¦ ¿°Å»ó¼ö¶ó°íµµ ºÎ¸£´Â ÀÌÀ¯´Â ¿°Å¸â¹ö°¡ ÇÁ·Î±×·¥ ³»¿¡¼´Â ¸ÅÅ©·Î »ó¼ö¿Í °ÅÀÇ µ¿µîÇÏ°Ô »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù. Áï, ¿°Å¸â¹ö´Â Á¤¼ö»ó¼öÀÇ ±âÈ£Àû Ç¥ÇöÀÌ¶ó º¸¸é µÈ´Ù.
¿°ÅÇü »ó¼ö´Â »ç¿ëÀÚ°¡ ÀÓÀÇ·Î °ªÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ°í, ¿°ÅÇü »ó¼öÀÇ Ã¹ ¹øÂ° °ªÀ» ÀÓÀÇ·Î ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù.
void main()
{
enum {zero,one,two,three,four, \\
five,six,seven,eight,nine,ten} number;
number=one+six; /* ¿°ÅÇü »ó¼ö¸¦ ÀÌ¿ëÇØ µ¡¼ÀÀ» ÇÔ */
printf("One+Six=%d\n",number);
}
À§ÀÇ ¿¹¿¡¼µµ º¼ ¼ö ÀÖµíÀÌ ¿°ÅÇü »ó¼ö´Â ÀÏ¹Ý ¼ö½Ä¿¡¼ Á¤¼öÇü »ó¼öó·³ ¾²À̸ç, int ÇüÀ¸·Î ÀÚµ¿º¯È¯µÈ´Ù. (enum ÇüÀÌ ºÎÈ£¾ø´Â ÇüÀ̸é unsignedÇüÀ¸·Î º¯È¯µÇ±âµµ ÇÑ´Ù.)
±×·±µ¥, À§ ¿¹Á¦¿Í °°Àº ¿°ÅÇü »ó¼ö ¼±¾ðÀº ÇÑ °¡Áö ¹®Á¦Á¡ÀÌ ÀÖ´Ù. ¿°ÅÇü »ó¼ö¸¦ ÀνÄÇϴµ¥ ¼±¾ðµÈ ±× ÇÔ¼ö¿¡¸¸ ±¹Çѵȴٴ °ÍÀÌ´Ù. ±×·¡¼, ´Ù¸¥ ÇÔ¼ö¿¡¼´Â °°Àº ¿°ÅÇü »ó¼ö¸¦ ¾µ ¼ö ¾ø´Ù´Â °á°ú°¡ ³ª¿Â´Ù. (¼±¾ðÀº Áߺ¹µÉ ¼ö À־, Á¤ÀÇ´Â Áߺ¹µÉ ¼ö ¾øÀ¸¹Ç·Î)
ÀÌ ¹®Á¦´Â ¿°ÅÇü »ó¼ö¸¦ ´Ù¸¥ ¹æ¹ýÀ¸·Î ¼±¾ðÇÔÀ¸·Î½á ÇØ°áÇÒ ¼ö ÀÖ´Ù.
¨ç ¿°ÅÅÿ¡ ÀÇÇÑ ¼±¾ð
enum ¿°ÅÅÃ {¿°ÅÇü »ó¼ö1, ¿°ÅÇü »ó¼ö2, . . . };
enum ¿°ÅÅà ¿°ÅÇü º¯¼ö1, ¿°ÅÇü º¯¼ö2, . . . ;
ÀÌ ¼±¾ð¹æ¹ýÀº À§¿¡¼ ¿°ÅÇü º¯¼öÀÇ ¼±¾ðÇüŸ¦ ¼±¾ðÇϰí, ¾Æ·¡¿¡¼ µÎ ¹øÂ° ¶óÀÎÀÇ ¹æ¹ýÀ¸·Î ½ÇÁ¦ÀûÀÎ º¯¼ö¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀÌ´Ù.
¡¡
#include <stdlib.h>
enum su {zero,one,two,three,four,five,six,seven,eight,nine,ten};
void test(void);
void main()
{
enum su a; /* ¿°ÅÇü ÅÃÀ» ÀÌ¿ëÇØ¼ ¿°ÅÇü º¯¼ö a¸¦ ¼±¾ð */
a=one+six; /* ¿°ÅÇü »ó¼ö¸¦ ÀÌ¿ëÇØ µ¡¼ÀÀ» ÇÔ */
printf("One+Six=%d\n",a);
test();
}
void test(void)
{
enum su b; /* ¿°ÅÇü ÅÃÀ» ÀÌ¿ëÇØ¼ ¿°ÅÇü º¯¼ö b¸¦ ¼±¾ð */
b=two+five;
printf("One+Five=%d\n",b);
}
¡¡
¨è typedef¹®À» ÀÌ¿ëÇÑ ¼±¾ð ÀÌ ¹æ¹ýÀº tytpedef¹®À» ÀÌ¿ëÇØ¼ ¿°ÅÇüÀ» ¼±¾ðÇÏ´Â »õ·Î¿î µ¥ÀÌÅÍÇüÀ» ¸¸µé¾î »ç¿ëÇÏ´Â °ÍÀÌ´Ù.
¡¡
typedef enum {zero,one,two,three,four,five, \\
six,seven,eight,nine,ten} number;
/* enumÇüÀ» ¼±¾ðÇÏ´Â »õ·Î¿î µ¥ÀÌÅÍÇü number¸¦ ¸¸µë */
void test(void);
void main()
{
number a;
/* »õ·Î¿î µ¥ÀÌÅÍÇü number¸¦ »ç¿ëÇØ¼ ¿°ÅÇü º¯¼ö a¸¦ ¼±¾ð */
a=one+six;
printf("One+Six=%d\n",a);
test();
}
void test(void)
{
number b;
/* »õ·Î¿î µ¥ÀÌÅÍÇü number¸¦ »ç¿ëÇØ¼ ¿°ÅÇü º¯¼ö b¸¦ ¼±¾ð */
b=two+five;
printf("One+Five=%d\n",b);
}