C ÇÁ·Î±×·¡¹Ö 11ȸ


<--Back                   Next-->

Introduction

Á¦1ȸ

Á¦2ȸ

Á¦3ȸ

Á¦4ȸ

Á¦5ȸ

Á¦6ȸ

Á¦7ȸ

Á¦8ȸ

Á¦9ȸ

Á¦10ȸ

Á¦11ȸ

Á¦12ȸ



À̹ø °­Á ¿¡¼­´Â °ø¿ëü¿Í ¿­°ÅÇü »ó¼ö ±×¸®°í ŸÀÔ ¸¸µé±â, ¼±Çà󸮱â Áö½Ã¾î¸¦ ¹è¿öº¸°Ú½À´Ï´Ù.

1. °ø¿ëü

°ø¿ëü¶õ ÇѰ³ ÀÌ»óÀÇ º¯¼ö°¡ ±â¾ïÀå¼Ò¸¦ °øÀ¯Çϰí ÀÖ´Â ±¸Á¶¶ó°í »ý°¢ÇÏ½Ã¸é µÊ´Ï´Ù.

°ø¿ëü´Â ±¸Á¶Ã¼¿Í ¿ÏÀüÈ÷ ¶È°°½À´Ï´Ù. ´Ü ±× ¾ÈÀÇ ¸ðµç ¸â¹ö º¯¼öµéÀÌ ±â¾ïÀå¼Ò¸¦ °øÀ¯Çϰí ÀÖ´Ù´Â Á¡ÀÌ ´Ù¸£ÁÒ. Áï ¸ðµç ¸â¹ö º¯¼öµéÀÇ ÁÖ¼Ò°¡ °°½À´Ï´Ù.

±×·¯¹Ç·Î ¾î¶² ¸â¹ö º¯¼öÀÇ ³»¿ëÀÌ ¹Ù²î¸é ´Ù¸¥ ¸ðµç ¸â¹ö º¯¼öÀÇ ³»¿ëµµ ¹Ù²î°Ô µÊ´Ï´Ù.

°ø¿ëüÀÇ ¼±¾ðºÎÅÍ »ç¿ë±îÁöµµ ¸ðµÎ ±¸Á¶Ã¼¿Í °°´Ù°í º¸½Ã¸é µÇ´Âµ¥ ´Ü ±¸Á¶Ã¼´Â struct¶ó´Â Ű¿öµå¸¦ ½èÁö¸¸ °ø¿ëü´Â unionÀ̶ó´Â Ű¿öµå¸¦ ¾²°í ÀÖÁÒ. ±×·¯¹Ç·Î Ưº°È÷ ¼±¾ð, »ç¿ë¹æ¹ý µî¿¡ ´ëÇØ¼­´Â ¼³¸í µå¸®Áö ¾Ê°Ú½À´Ï´Ù. 10ȸ¿¡ ³ª¿Ô´ø ±¸Á¶Ã¼ÀÇ ¼³¸í¸¸ Àß ÀÐÀ¸¼Ì°í ±×°ÍÀ» Àß ÀÌÇØÇÏ¼Ì´Ù¸é ±¸Áö ¼³¸íÀÌ ÇÊ¿ä ¾ø´Ù°í º¾´Ï´Ù.

±×·³ ¸î°¡Áö ¿¹¸¦ µé¾î º¸°í °ø¿ëü¿¡ ´ëÇØ¼± ¸¶Ä¡µµ·Ï ÇÏÁÒ.

µÎ Á¤¼ö º¯¼ö a¿Í b¸¦ ¸â¹ö º¯¼ö·Î °¡Áö°í ÀÖ´Â Data¶ó´Â À̸§ÀÇ °ø¿ëü´Â ´ÙÀ½°ú °°ÀÌ ¸¸µé¸é µÇ°ÚÁÒ?

union Data

{

int a;

int b;

};

±¸Á¶Ã¼¿Í ¶È°°Áö¸¸ ´ÜÁö unionÀ̶ó´Â Ű¿öµå¸¦ ¾´ °Í »ÓÀÔ´Ï´Ù.

±×·³ »ç¿ëÇÒ¶© ¾î¶»°Ô ÇÒ±î¿ä? ±¸Á¶Ã¼¿¡¼± ±¸Á¶Ã¼ º¯¼ö¶ó´Â °ÍÀ» ¼±¾ðÇØ »ç¿ëÇߴµ¥, ÀÌ¿Í ¸¶Âù°¡Áö·Î °ø¿ëü¿¡¼± °ø¿ëü º¯¼ö¶ó´Â °ÍÀ» ¼±¾ðÇØ »ç¿ëÇÏ¸é µÊ´Ï´Ù.

¿¹¸¦ µé¾î d¶ó´Â À̸§À» °¡Áø À§ÀÇ Data¶ó´Â °ø¿ëüÀÇ º¯¼ö´Â

union Data d;

ÀÌ·¸°Ô ¼±¾ðÇϰÚÁÒ?

±×¸®°í ¸â¹ö º¯¼öÀÎ a¸¦ 10À¸·Î ¹Ù²Û´Ù°í ÇÏ¸é ±¸Á¶Ã¼¿Í °°Àº ¹æ¹ýÀ¸·Î

d.a=10;

ÀÌ·¸°Ô ÇØ ÁÖ¸é µÊ´Ï´Ù.

±×·±µ¥ ¿©±â¼­ Áß¿äÇÑ °ÍÀÌ Àִµ¥, Áö±Ý ¸â¹ö º¯¼öÀÎ a¿¡ 10À» ³Ö¾ú½À´Ï´Ù. ±×·¸´Ù¸é ¶Ç´Ù¸¥ ¸â¹öº¯¼ö b¿¡´Â ¾î¶² °ªÀÌ µé¾î°¥±î¿ä?

b¿¡µµ ¿ª½Ã 10ÀÌ µé¾î°¡°ÚÁÒ? ÀÌ°Ô ±¸Á¶Ã¼¶ó¸é b¶ó´Â ¸â¹öº¯¼ö¿¡´Â ¾Æ¹« º¯È­°¡ ¾ø°ÚÁö¸¸ °ø¿ëüÀ̱⠶§¹®¿¡ a¿Í b´Â ±â¾ïÀå¼Ò¸¦ °øÀ¯Çϰí ÀÖÀ¸¹Ç·Î ±×·¸°Ô µÇ´Â °ÍÀÌÁÒ.

±¸Á¶Ã¼Ã³·³ °ø¿ëü¿¡µµ °ø¿ëü ¹è¿­°ú °ø¿ëü Æ÷ÀÎÅͰ¡ Àִµ¥ ÀÌ°Ç »ý·«Çصµ »ó°ü ¾øÀ»°Í °°±º¿ä. ¾îÂ÷ÇÇ struct¶ó´Â Ű¿öµå µ¥½Å unionÀ̶ó´Â Ű¿öµå¸¦ ¾´´Ù´Â °Í »©°í´Â ±¸Á¶Ã¼¿Í ¼±¾ð¹× »ç¿ë¹ý µîÀÌ ¶È°°À¸´Ï±î¿ä.

±¸Á¶Ã¼¸¦ Àß °øºÎÇÏ¼Ì´Ù¸é ±×¸® ¾î·ÆÁö ¾ÊÀ¸¼ÌÀ» °É·Î ¾Ë°í ÀÌÁ¤µµ·Î °ø¿ëü ¼³¸íÀº ¸¶Ä¡°Ú½À´Ï´Ù.

2. ¿­°ÅÇü »ó¼ö

¿­°ÅÇü »ó¼ö¶õ Á¤¼öÇü »ó¼öÀÇ ÀÏÁ¾À¸·Î µ¿ÀÏÇÑ ¿ëµµ·Î ¾²ÀÌ´Â »ó¼öµé¿¡°Ô ±×µéÀ» ´ë½ÅÇÒ¼ö ÀÖ´Â À̸§À» ºÎ¿©ÇÏ¿© ¿­°ÅÇØ µÐ °ÍÀÔ´Ï´Ù.

¿­°ÅÇü »ó¼ö¸¦ ¸¸µå´Â ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.

enum [¿­°Å¸í] { »ó¼ö¸í [= »ó¼ö°ª], ... } [º¯¼ö, º¯¼ö, ..];

¿©±â¼­ ¿­°Å¸í ¿­°ÅÇØµÐ »ó¼ö°¡ ¾î¶² »ó¼öµéÀÎÁö ±× »ó¼öµé Àüü¿¡ ´ëÇÑ À̸§ÀÔ´Ï´Ù.

±×¸®°í »ó¼ö¸íÀº »ó¼ö¸¦ ´ë½ÅÇÒ À̸§, »ó¼ö°ªÀº ±× »ó¼ö¸í¿¡´ëÇÑ ½ÇÀç °ª, ¸¶Áö¸·À¸·Î º¯¼ö´Â ÀÏ¹Ý º¯¼ö¸¦ ¼±¾ðÇÑ °ÍÀ¸·Î¼­ Á¤¼öÇü(int) º¯¼öÀÔ´Ï´Ù.

¿©±â¼­ »ó¼ö°ªÀº »ý·« °¡´ÉÇѵ¥ »ý·«ÇÏ¸é ±× Àü¿¡ ÀÖ´Â »ó¼öÀÇ ´ÙÀ½ °ªÀ¸·Î ÁöÁ¤µÊ´Ï´Ù. ¿¹¸¦ µé¾î Àü¿¡ °ªÀÌ 100ÀÌ¸é ±× ´ÙÀ½ °ªÀÎ 101ÀÌ µÇÁÒ.

±×·±µ¥ ±× Àü¿¡ ÀÖ´Â »ó¼ö°¡ ¾øÀ»¶§ Áï óÀ½À϶§´Â 0ÀÌ µÊ´Ï´Ù.

±×¸®°í ¿­°Å¸í°ú º¯¼öµéµµ »ý·«Çصµ µÊ´Ï´Ù.

±×·³ ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº ¿­°ÅÇü »ó¼ö°¡ ÀÖ´Ù°í ÇսôÙ.

enum NUMBER { ZERO, FIRST, SECOND, THIRD, FORHT, FIFTH };

ÀÌ·¸°Ô ¿­°ÅÇü »ó¼ö¸¦ ¸¸µé°í ³ª¸é ÇÁ·Î±×·¥ ³»¿¡¼­ 0´ë½Å ZERO¸¦ 1´ë½Å FIRST¸¦.... ÀÌ·¸°Ô »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù.

±×¸®°í ¿­°ÅÇü »ó¼ö¸¦ ¸¸µé¶§ ¿­°Å¸íÀº »ý·« °¡´ÉÇϹǷÎ

enum { ZERO, FIRST, SECOND, THIRD, FORHT, FIFTH };

ÀÌ·¸°Ô¸¸ ÇØµµ µÊ´Ï´Ù.

¶ÇÇÑ À§¿Í °°Àº ¿­°ÅÇü »ó¼ö¸¦ ¸¸µé¸é¼­ º¯¼ö a, b¸¦ ¼±¾ðÇÏ·Á¸é

enum NUMBER { ZERO, FIRST, SECOND, THIRD, FORHT, FIFTH } a, b;

ÀÌ·¸°Ô ÇÏ¸é µÊ´Ï´Ù. À̶§ ¼±¾ðµÈ a, b´Â Á¤¼öÇü(int) º¯¼öÀÔ´Ï´Ù.

±×·¯¹Ç·Î

enum NUMBER { ZERO, FIRST, SECOND, THIRD, FORHT, FIFTH };

int a, b;

ÀÌ·¸°Ô ÇÏ´Â °Í°ú ¶È°°Àº °ÍÀÌÁÒ.

¸¶Áö¸·À¸·Î ¾î¶² ÇÁ·Î±×·¥¿¡´Â

enum ¿­°Å¸í º¯¼ö¸í[, º¯¼ö¸í, ...];

ÀÌ·¸°Ô ¼±¾ðµÈ º¯¼ö°¡ ÀÖ½À´Ï´Ù.

À̰ÍÀº ÀÏ¹Ý Á¤¼öÇü(int) º¯¼ö¿Í ¿ÏÀüÈ÷ ¶È°°½À´Ï´Ù.

±×·¯´Ï±î À§¿Í³ª¿Â NUMBER¶ó´Â ¿­°ÅÇü »ó¼ö°¡ ¸¸µé¾îÁ® ÀÖÀ»¶§

enum NUMBER a, b, c;

ÀÌ·¸°Ô ÇÑ °ÍÀº

int a, b, c;

À̰Ͱú ¶È°°Àº ÀÇ¹Ì ÀÔ´Ï´Ù.

3. ŸÀÔ ¸¸µé±â

C¾ð¾î¿¡´Â ¿©·¯°¡Áö µ¥ÀÌÅÍ Å¸ÀÔ Å°¿öµå µéÀÌ ÀÖ½À´Ï´Ù.

int, char, float, doubleµîÀÌ ÀÖÁÒ?

ÀÌ·±°Ç ±×³É ¾²±â¿¡ ºÒÆíÇÑ Á¡ÀÌ ¾ø½À´Ï´Ù.

ÇÏÁö¸¸ unsigned short intÇüÅÂÀÇ µ¥ÀÌÅ͸¦ ¸¹ÀÌ ½á¾ß ÇÑ´Ù°í ÇսôÙ.

±×·²¶§´Â ³Ê¹« ±æ¾î¼­ ¾²±â°¡ Áö°Ü¿ö ÁöÁÒ.

ÀÌ°É °£´ÜÈ÷ ¾²´Â ¹æ¹ýÀÌ Àִµ¥ ¹æ¹ýÀº unsigned short int¿Í ¶È°°Àº ÇüÅÂÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ» »õ·Ó°Ô ¸¸µé¾î ÁÖ´Â °ÍÀÌÁÒ.

ÀÌ·¸°Ô »õ·Î¿î µ¥ÀÌÅÍ Å¸ÀÔÀ» ¸¸µé¶§ ¾²´Â °ÍÀÌ typedefÀÔ´Ï´Ù.

±×·³ »ç¿ë ¹æ¹ýÀ» ¾Ë¾Æº¸ÁÒ. »ç¿ëÀº ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.

typedef ±âÁ¸Å¸ÀÔ »õ·Î¿îŸÀÔ;

¿¹¸¦ µé¾î unsigned short int¿Í ¶È°°Àº ÇüÅÂÀÇ word¶ó´Â µ¥ÀÌÅÍ ÇüŸ¦ ¸¸µé·Á¸é

typedef unsigned short int word;

ÀÌ·¸°Ô ÇØ ÁÖ¸é µÊ´Ï´Ù.

±×·¯¸é ÇÁ·Î±×·¥ ³»¿¡¼­

unsigned short int a;

À̰Š´ë½Å

word a;

ÀÌ·¸°Ô¸¸ ÇØ Á־ µÊ´Ï´Ù.

±×¸®°í typedef·Î´Â ±¸Á¶Ã¼¸¦ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î ¸¸µé¾î ÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù.

Àú¹ø¿¡ ±¸Á¶Ã¼¸¦ ¼³¸íÇÒ¶§ ±¸Á¶Ã¼´Â µ¥ÀÌÅÍ Å¸ÀÔÀ» »õ·Ó°Ô ¸¸µå´Â °ÍÀ̶ó°í »ý°¢ÇÏ½Ã¸é µÈ´Ù°í Çߴµ¥ ±×°ÍÀÌ ÁøÂ¥·Î »õ·Î¿î µ¥ÀÌÅÍ Å¸ÀÔÀ» ¸¸µç °ÍÀº ¾Æ´Õ´Ï´Ù. ÇÏÁö¸¸ typedef¸¦ ¾²¸é ÁøÂ¥·Î »õ·Î¿î µ¥ÀÌÅÍ Å¸ÀÔÀ» ¸¸µé ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌÁÒ.

¿¹¸¦ µé¾î Student¶ó´Â ±¸Á¶Ã¼°¡ ÀÖ´Ù°í ÇսôÙ.

±×¶§

typedef struct Student StudentType;

ÀÌ·¸°Ô ÇØ ÁÖ¸é Student¶ó´Â ±¸Á¶Ã¼¸¦ StudentType¶ó´Â À̸§ÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î ¸¸µé¾î ÁØ °ÍÀÔ´Ï´Ù.

±×·¯¸é ÇÁ·Î±×·¥¿¡¼­

struct Student s;

ÀÌ·¸°Ô ÇÒ °ÍÀ» ´ÜÁö

StduentType s;

ÀÌ·¸°Ô¸¸ ÇØ ÁÖ¸é µÊ´Ï´Ù.

°ø¿ëü ¿ª½Ã ±¸Á¶Ã¼¿Í ¸¶Âù°¡Áö·Î µ¥ÀÌÅÍ Å¸ÀÔÀ» ¸¸µé¼ö ÀÖ½À´Ï´Ù.

4. ¼±Çà󸮱â Áö½Ã¾î

¼±Çà󸮱⿡ ´ëÇØ¼­´Â 1ȸ¶§ ¹è¿îÀûÀÌ ÀÖ°í ¼±Çà󸮱â Áö½Ã¾îÁß #include¿¡ ´ëÇØ¼­ 2ȸ¶§ ÀÌ¹Ì ¹è¿ì¼Ì½À´Ï´Ù.

ÇÏÁö¸¸ Áö½Ã¾î¿¡´Â ÀÌ°Í ¿Ü¿¡µµ ¸î°¡Áö°¡ ´õ ÀÖ½À´Ï´Ù.

±×·³ ±×°Íµé¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÁÒ.

(1) #define

#define¶ó´Â Áö½Ã¾î´Â ¸ÅÅ©·Î ±â´ÉÀ» ¼öÇàÇÏ´Â Áö½Ã¾î ÀÔ´Ï´Ù.

±âº»ÀûÀÎ »ç¿ë¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.

#define ¸ÅÅ©·Î¸í [°ª]

ÀÌ·¸°Ô ÇØ µÎ¸é ÇÁ·Î±×·¥ ³»¿¡¼­ ¸ÅÅ©·Î¸í°ú °°Àº À̸§À» °¡Áø ´Ü¾îµéÀ» ¸ðµÎ °ªÀ¸·Î ¹Ù²ã ÁÜ´Ï´Ù. ±×¸®°í ¿©±â¼­ °ªÀº ¾ø¾îµµ µÇÁÒ.

¿¹¸¦ µé¾î

#define DATA 10

ÀÌ·¸°Ô ÇØ ÁÖ¸é ÇÁ·Î±×·¥ ³»¿¡ DATA¶ó´Â ´Ü¾î¸¦ ¸ðµÎ 10À¸·Î ¹Ù²ã ÁÖ°Ô µÊ´Ï´Ù.

Áï ÇÁ·Î±×·¥¿¡¼­

if(a==DATA)

{

.

.

}

ÀÌ·¸°Ô ¾´ °ÍÀº ½ÇÀç·Î´Â

if(a==10)

{

.

.

}

ÀÌ·¸°Ô µÇ¾î ¹ö¸®´Â °Í ÀÔ´Ï´Ù.

#define¶ó´Â Áö½Ã¾î·Î´Â ÇÔ¼ö¿Í °°Àº ¸ÅÅ©·Îµµ ¸¸µé¼ö ÀÖ½À´Ï´Ù.

¸¸µå´Â ¹æ¹ýÀº ´ÙÀ½°ú °°ÁÒ.

#define ¸ÅÅ©·ÎÇÔ¼ö¸í([Àμö, Àμö, ...]) [¹®Àå]

À̶§ Àμö´Â ÀÏ¹Ý ÇÔ¼öÀÇ Àμö¿Í ¶È°°Àº ¿ëµµ·Î ¾²ÀÔ´Ï´Ù.

Áï °ªÀ» Àü´Þ¿¡ ÁÖ´Â ¿ªÈ°À» ÇÏÁÒ. ¹°·Ð ¾ø¾îµµ »ó°ü ¾ø°í¿ä.

±×¸®°í ¹®ÀåÀº ¸ÅÅ©·ÎÀÇ ³»¿ëÀ¸·Î ÀμöµéÀ» ¾µ¼ö ÀÖÁÒ.

±×·³ ¿¹¸¦ µé¾î º¸ÁÒ.

#define FUNC(a,b) printf(a,b);

ÀÌ·¸°Ô ¸ÅÅ©·Î¸¦ ¸¸µé¾ú´Ù°í ÇսôÙ.

±×¸®°í ÇÁ·Î±×·¥ ³»¿¡¼­ ÀÌ ¸ÅÅ©·Î¸¦

FUNC("%d",10);

ÀÌ·¸°Ô »ç¿ëÇß´Ù¸é ÀÌ°Ç ¼±Çà󸮱Ⱑ Áö½Ã¾î¸¦ ¹ø¿ªÇÑ ÈÄ¿¡´Â

printf("%d",10);

ÀÌ·¸°Ô µÇ¾î ¹ö¸®´Â °Í ÀÔ´Ï´Ù.

ÀÌÁ¤µµ¸é ÀÌÇØ°¡ µÇ¼Ì°ÚÁÒ?

(2) ##¿Í \

¸ÅÅ©·Î¸¦ ¸¸µé¶§¸¸ »ç¿ëÇÒ¼ö ÀÖ´Â ¸î°¡Áö Áö½Ã¾î°¡ Àִµ¥,

¹Ù·Î ##¿Í \ÀÔ´Ï´Ù.

##´Â ÇÔ¼ö¿Í °°Àº ¸ÅÅ©·Î¿¡¼­¸¸ »ç¿ëÇÏ´Â °ÍÀ¸·Î µÎ°¡Áö Àμö¸¦ ¿¬°á½ÃÄÑ ¹ö¸®´Â ±â´ÉÀ» ÇÕ´Ï´Ù.

¿¹¸¦ µé¾î

#define MACRO(a,b) a##b

ÀÌ·¸°Ô ¸ÅÅ©·Î¸¦ ¸¸µé¾ú´Ù°í ÇսôÙ.

ÇÁ·Î±×·¥¿¡¼­ ÀÌ ¸ÅÅ©·Î¸¦

a=MACRO(First,Last);

ÀÌ·¸°Ô »ç¿ëÇß´Ù¸é

½ÇÀç·Î´Â µÎ Àμö First¿Í Last°¡ ¿¬°áµÇ¾î

a=FirstLast;

ÀÌ·¸°Ô µÇ´Â °Í ÀÔ´Ï´Ù.

\´Â ¸ÅÅ©·ÎÀÇ ³»¿ëÀÌ ³Ê¹« ±æ¶§ ¿©·¯ÁÙ¿¡ ¾²±â À§ÇØ ÇÊ¿äÇÑ °ÍÀÔ´Ï´Ù.

ÁÙ ¸Ç ³¡¿¡ \¸¦ ºÙ¿© ÁÖ¸é ±× ¾Æ·§ÁÙ¿¡ °è¼Ó ¿¬°áÇÏ¿© ¾µ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌÁÒ.

¿¹¸¦ µé¾î

#define MACRO(a,b,c) a=b+c; printf("%d\n",a); a=b-c; printf("%d\n",a)

ÀÌ·± ¸ÅÅ©·Î°¡ ÀÖ´Ù°í ÇսôÙ.

ÀÌ°Ç \¸¦ ½á¼­ ´ÙÀ½°ú °°ÀÌ ¾²¸é º¸±âµµ ½±°í ¸¸µé±âµµ ½±ÁÒ.

#define MACRO(a,b,c) a=b+c; \

printf("%d\n",a); \

a=b-c; \

printf("%d\n",a)

(3) #undef

#define·Î ¸¸µç ¸ÅÅ©·Î¸¦ ¾ø¿¤¶§´Â ¾î¶»°Ô ÇÒ±î¿ä?

±×¶§ #undef¶ó´Â Áö½Ã¾î¸¦ »ç¿ëÇÕ´Ï´Ù.

»ç¿ë¹ýÀº ´ÙÀ½°ú °°ÁÒ.

#undef ¸ÅÅ©·Î¸í

¿©±â¼­ ¸ÅÅ©·Î¸íÀº ¾ø¿¡·Á°í ÇÏ´Â ¸ÅÅ©·ÎÀÇ À̸§À¸·Î ÀÌ¹Ì ¸¸µé¾î Á® ÀÖ´Â °ÍÀ̾î¾ß ÇÕ´Ï´Ù.

ÀÌ·¸°Ô ÇØ ÁÖ¸é ÇØ´ç ¸ÅÅ©·Î´Â ¾ø¾îÁ®¼­ ´õÀÌ»ó »ç¿ëÇÒ¼ö ¾ø°Ô µÊ´Ï´Ù.

(4) #if-#elif-#else-#endif

#if-#elif-#else-#endif´Â

¼±ÅÃÀû ¸ÅÅ©·Î ¼±¾ðÀ̳ª ¼±ÅÃÀû ÄÄÆÄÀÏ ±â´ÉÀ» ÇÏ´Â ¸ÅÅ©·Î ÀÔ´Ï´Ù.

C¾ð¾î ÇÁ·Î±×·¥ È帧Á¦¾îÁß if¹®°ú ºñ½ÁÇÏÁÒ.

»ç¿ë¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.

#if Á¶°ÇA

/* AºÎºÐ */

.

.

#elif Á¶°ÇB

/* BºÎºÐ */

.

.

.

.

#else

/* elseºÎºÐ */

.

.

#endif

¿©±â¼­ Á¶°ÇA°¡ ¸¸Á·Çϸé AºÎºÐ¸¸À» Á¶°ÇB°¡ ¸¸Á·Çϸé BºÎºÐ¸¸À»...

±×¸®°í ¾î¶² Á¶°Ç¿¡µµ ¸¸Á·ÇÏÁö ¾ÊÀ¸¸é elseºÎºÐ¸¸À» ÄÄÆÄÀÏ ÇØ ÁÖ°Ô µÊ´Ï´Ù.

±×¸®°í #elifºÎºÐ°ú #elseºÎºÐÀº ¾ø¾îµµ µÊ´Ï´Ù.

Á¶°ÇÀº ÀÏ¹Ý C¾ð¾îÀÇ °ü°èÇü ¿¬»êÀÚ¿Í ³í¸® ¿¬»êÀÚ ±×¸®°í defined¶ó´Â °ÍÀ» »ç¿ëÇÑ Á¶°Ç ÀÌÁö¸¸ º¯¼ö°°Àº°Ç »ç¿ëµÉ¼ö ¾ø°í ¸ÅÅ©·Î¸¦ »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¾î

DATA1 == DATA2

ÀÌ·± Á¶°ÇÀº

DATA1À̶õ ¸ÅÅ©·Î¿Í DATA2¶ó´Â ¸ÅÅ©·ÎÀÇ °ªÀº °°´Ù

¶ó´Â Á¶°Ç ÀÔ´Ï´Ù.

±×¸®°í defined´Â ƯÁ¤ ¸ÅÅ©·Î°¡ ¸¸µé¾îÁ® ÀÖÀ¸¸é ÂüÀ» ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀ» µ¹·Á ÁÖ´Â ±â´ÉÀ» Çϴµ¥, »ç¿ë¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.

defined(¸ÅÅ©·Î¸í)

À̶§ ¸ÅÅ©·Î¸í¿¡ ÇØ´çÇÏ´Â ¸ÅÅ©·Î°¡ ¸¸µé¾îÁ® ÀÖÀ¸¸é ÂüÀ» ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀ» µ¹·ÁÁÖÁÒ.

±×·³ ÇѰ¡Áö ¿¹¸¦ µé¾î º¸ÁÒ.

#define MACRO 10

#if !defined(MACRO)

printf("MACRO not found\n");

#elif MACRO == 0

printf("MACRO = 0\n");

#elif MACRO == 5

printf("MACRO = 5\n");

#elif MACRO == 10

printf("MACRO = 10\n");

#else

printf("MACRO = Another value\n");

#endif

´ÙÀ½°ú °°Àº ³»¿ëÀÌ ÀÖÀ» ¶§ ½ÇÀç·Î ÄÄÆÄÀÏ µÇ´Â °ÍÀº ¾î¶² ¹®Àå Àϱî¿ä?

´ç¿¬È÷

printf("MACRO = 10\n");

ÀÌ ¹®Àå À̰ÚÁÒ.

Àß ºÐ¼®ÇØ º¸½Ã¸é ¿Ö ±×·±Áö´Â ¾Æ½Ã°Ô µÇ½Ç °Ì´Ï´Ù.

(5) #ifdef-#else-#endif

#ifdef-#else-#endif´Â #if-#elif-#else-#endif¿Í ºñ½ÁÇÏÁö¸¸ ´Ù¸¥ Á¶°ÇµéÀ» ÁÙ¼ö ¾ø°í ´ÜÁö ¾î¶² ¸ÅÅ©·Î°¡ ¸¸µé¾îÁ® ÀÖÀ»°Ü¿ì ƯÁ¤ ºÎºÐÀ» ÄÄÆÄÀÏ ½ÃÄÑ ÁÖ´Â ±â´ÉÀ» ÇÕ´Ï´Ù.

»ç¿ëÀº ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.

#ifdef ¸ÅÅ©·Î¸í

/* AºÎºÐ */

.

.

#else

/* BºÎºÐ */

.

.

#endif

¿©±â¼­ ¸ÅÅ©·Î¸í¿¡ ÇØ´çÇÏ´Â ¸ÅÅ©·Î°¡ ¸¸µé¾îÁ® ÀÖÀ» °æ¿ì AºÎºÐÀ» ±×·¸Áö ¾ÊÀ¸¸é BºÎºÐÀ» ÄÄÆÄÀÏ ÇÕ´Ï´Ù.

±×¸®°í #elseºÎºÐÀº ¾ø¾îµµ µÊ´Ï´Ù.

(6) #ifndef-#else-#endif

#ifndef-#else-#endif´Â À§¿¡ #ifdef-#else-#endif¿Í °ÅÀÇ

¶È°°½À´Ï´Ù. ÇÏÁö¸¸ À§¿¡°Í¿¡¼± ¾î¶² ¸ÅÅ©·Î°¡ ¸¸µé¾îÁ® ÀÖÀ» ¶§ ƯÁ¤ ºÎºÐÀ» ÄÄÆÄÀÏ ½ÃŰ´Â °ÍÀÌÁö¸¸, ÀÌ°Ç Æ¯Á¤ ¸ÅÅ©·Î°¡ ¸¸Áñ¾î Á® ÀÖÁö ¾ÊÀ»¶§ ƯÁ¤ ºÎºÐÀ» ÄÄÆÄÀÏ ½ÃÄÑ ÁÖ´Â °Í ÀÔ´Ï´Ù.

»ç¿ëÀº

#ifndef ¸ÅÅ©·Î¸í

/* AºÎºÐ */

.

.

#else

/* BºÎºÐ */

.

.

#endif

ÀÌ·¸°Ô ÇÕ´Ï´Ù. ¿©±â¼­ ¸ÅÅ©·Î¸í¿¡ ÇØ´çÇÏ´Â ¸ÅÅ©·Î°¡ ¸¸µé¾î Á® ÀÖÁö ¾ÊÀ¸¸é AºÎºÐÀ» ±×·¸Áö ¾Ê°í ¸¸µé¾îÁ® ÀÖÀ¸¸é BºÎºÐÀ» ÄÄÆÄÀÏ ÇØ ÁÖ°í #elseºÎºÐÀ» ¾ø¾îµµ µÊ´Ï´Ù.

(7) #error

#error¶ó´Â Áö½Ã¾î´Â ¿¡·¯¸¦ ¹ß»ý½ÃÄÑ ÄÄÆÄÀÏÀ» ÁßÁö ½ÃŰ´Â Áö½Ã¾î ÀÔ´Ï´Ù.

Áö±ÝÀº º°·Î ¾µ ÀÏÀÌ ¾øÁö¸¸ ¾ðÁ¨°£ ²À ¾µ ÀÏÀÌ ÀÖÀ» °Ì´Ï´Ù.

»ç¿ëÀº ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.

#error ¿¡·¯³»¿ë

¿©±â¼­ ¾´ ¿¡·¯³»¿ëÀÌ ÄÄÆÄÀÏ ÇÒ¶§ Ç¥½Ã°¡ µÇ¸ç, ÄÄÆÄÀÏÀÌ ÁßÁö µÊ´Ï´Ù.

À̰ÍÀ¸·Î À̹ø °­Á´ ¸¶Ä¡µµ·Ï ÇϰڽÀ´Ï´Ù.

´ÙÀ½ °­Á ¿¡¼­´Â ¿ÜºÎ ÇÁ·Î±×·¥°ú ¿¬°áÇÏ´Â ¹æ¹ý, ±×¸®°í ¶óÀ̺귯¸®¿¡ ´ëÇØ ¾Ë¾Æº¸ÁÒ.