| |
¢¹ A12.1 »ïÁßÀÚ (Trigraph Sequence)
C ÇÁ·Î±×·¥ ¼Ò½ºÀÇ ¹®ÀÚ¼¼Æ® (character set) ´Â 7ºñÆ® ASCII Äڵ峻¿¡
Æ÷ÇÔµÇÁö¸¸, ISO 646-1983 Invariant Code Set º¸´Ù Å« ¹®ÀÚ¼¼Æ®ÀÔ´Ï´Ù. (Áï,
ÁýÇÕÀ¸·Î Ç¥ÇöÇϸé, 7ºñÆ® ASCII ÄÚµå ¡ù C ¼Ò½º ¹®ÀÚ¼¼Æ® ¡ù ISO 646-1983
Invariant Code Set ÀÔ´Ï´Ù)
 |
 |
¢º ¿ªÀÚ ÁÖ
ISO 646 Àº 1983³â ISO ¿¡ ÀÇÇØ Ç¥ÁØÈµÈ 82ÀÚÀÇ ±âº» ¹®ÀÚ¼¼Æ® ÀÔ´Ï´Ù.
C ¾ð¾îÀÇ ¼Ò½º¹®ÀÚ¼¼Æ®¿Í ½ÇÇ๮ÀÚ¼¼Æ® (source and execution character set)
´Â ISO 646 ¾ÈÀÇ ¹®ÀÚµéÀ» ¸ðµÎ Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù. ÇÏÁö¸¸ ISO 646 ¹®ÀÚ¼¼Æ®´Â
C ¾ð¾î¿¡¼ »ç¿ëµÇ´Â ¸ðµç ¹®ÀÚ¸¦ ´ã°í ÀÖÁö ¾ÊÀ¸¸ç, ÀϺΠ¿Ü±¹¾îÀÇ ¹®ÀÚ¼¼Æ®
¿ª½Ã ¸¶Âù°¡ÁöÀÎ °æ¿ì°¡ ÀÖ½À´Ï´Ù. |
|
 |
 |
ÇÁ·Î±×·¥À» ´õ ÀûÀº ¹®ÀÚ¼¼Æ®·Î Ç¥ÇöÇÒ ¼ö ÀÖµµ·Ï, ´ÙÀ½¿¡ ³ª¿À´Â ¸ðµç »ïÁßÀÚ
(trigraph sequence) ´Â ´ëÀÀÇÏ´Â ÇϳªÀÇ ¹®ÀÚ·Î ´ëüµË´Ï´Ù. ÀÌ·¯ÇÑ »ïÁßÀÚÀÇ
´ëüÀÛ¾÷Àº ´Ù¸¥ ¾î¶² Àü󸮱â´É º¸´Ù ¿ì¼±ÇÕ´Ï´Ù.
| ??= |
# |
|
??( |
[ |
|
??< |
{ |
| ??/ |
\ |
|
??) |
] |
|
??> |
} |
| ??' |
^ |
|
??! |
| |
|
??- |
~ |
À§¿¡¼ ³ª¿µÈ »ïÁßÀÚ¿Ü¿¡ ´ëüÀÛ¾÷Àº ÀϾÁö ¾Ê½À´Ï´Ù.
| |
»ïÁßÀÚ´Â ANSI Ç¥ÁØ¿¡¼ »õ·Î¿î °ÍÀÔ´Ï´Ù. |
¢¹ A12.2 ¶óÀÎ ¿¬°á (Line Splicing)
¹é½½·¯½¬ \ ·Î ³¡³ª´Â ¶óÀÎÀº, ¹é½½·¯½¬¿Í ±× µÚ¿¡ µû¶ó¿À´Â °³Ç๮ÀÚ
(newline) À» Á¦°ÅÇØ¼ ´ÙÀ½ ¶óÀΰú ¿¬°áµË´Ï´Ù. ÀÌ·¯ÇÑ ¶óÀÎ ¿¬°áÀº
¼Ò½º°¡ ÅäÅ«À¸·Î ºÐ¼®µÇ±â Àü¿¡ ÀϾ´Ï´Ù.
¢¹ A12.3 ¸ÅÅ©·Î Á¤ÀÇ¿Í È®Àå (Macro Definition and Expansion)
| # define identifier token-sequence |
À§¿Í °°Àº Á¦¾î¶óÀÎ (control line) Àº ÇÁ·Î±×·¥ ¼Ò½º¿¡ ³ªÅ¸³ª´Â ¸íĪ (identifier)
À» ÁÖ¾îÁø ÅäÅ«¿ (token-sequence) ·Î ¹Ù²ãÁÝ´Ï´Ù; ÅäÅ«¿ÀÇ ¾ÕµÚ¿¡ ÀÖ´Â °ø¹é¹®ÀÚ
(white space) ´Â Á¦°ÅµË´Ï´Ù. ÅäÅ« ¾È¿¡ ÀÖ´Â °ø¹é¹®ÀÚ±îÁö °í·ÁÇØ¼, ÁÖ¾îÁø
ÅäÅ«¿ÀÌ µ¿ÀÏÇÏÁö ¾ÊÀ¸¸é, µ¿ÀÏÇÑ ¸íĪÀÇ Áߺ¹µÈ ¸ÅÅ©·Î°¡ ÁÖ¾îÁö´Â °ÍÀº À߸øµÈ
°ÍÀÔ´Ï´Ù.
| # define identifier( identifier-list opt ) token-sequence |
ù¹øÂ° ¸íĪ (identifier) °ú ¿©´Â °ýÈ£ ( »çÀÌ¿¡ °ø¹éÀÌ ¾ø¾î¾ß ÇÏ´Â,
À§¿Í °°Àº ÇüÅÂÀÇ ¶óÀÎÀº ¸íĪ ¸®½ºÆ® (identifier-list) ¸¦ ¸Å°³º¯¼ö (parameter)
·Î °®´Â, ¸ÅÅ©·Î Á¤ÀÇÀÔ´Ï´Ù. ù¹øÂ° ÇüÅ¿¡¼Ã³·³, ÅäÅ«¿ ¾ÕµÚÀÇ °ø¹é¹®ÀÚ
(white space) ´Â Á¦°ÅµÇ¸ç, ¸Å°³º¯¼öÀÇ °³¼ö¡¤Ã¶ÀÚ¿Í ÅäÅ«¿ÀÌ µ¿ÀÏÇØ¾ß¸¸
¸ÅÅ©·Î°¡ Áߺ¹ Á¤ÀÇµÉ ¼ö ÀÖ½À´Ï´Ù.
À§¿Í °°Àº Á¦¾î¶óÀÎ (control line) Àº ¸íĪÀÇ Àü󸮱â Á¤ÀǸ¦ ¾ø´ø °ÍÀ¸·Î
¸¸µé¾î ÁÝ´Ï´Ù. Á¤ÀǵÇÁö ¾ÊÀº ¸íĪ¿¡ #undef ¸¦ Àû¿ëÇÏ´Â °ÍÀº À߸øµÈ °ÍÀÌ
¾Æ´Õ´Ï´Ù.
¸ÅÅ©·Î°¡ µÎ¹øÂ° ÇüÅ·ΠÁ¤ÀǵǸé, ÇÁ·Î±×·¥ ¼Ò½º¿¡ ³ª¿À´Â ¸ÅÅ©·Î ¸íĪ
(¸ÅÅ©·Î ¸íĪµÚ¿¡´Â, »ý·«°¡´ÉÇÑ °ø¹é¹®ÀÚ, ¿©´Â °ýÈ£, ½°Ç¥·Î ºÐ¸®µÈ ÅäÅ«¿µé,
´Ý´Â °ýÈ£°¡ µû¶ó¿É´Ï´Ù) Àº ±× ¸ÅÅ©·Î¸¦ È£ÃâÇÕ´Ï´Ù. È£Ãâ½ÃÀÇ ÀÎÀÚ (argument)
´Â ½°Ç¥·Î ºÐ¸®µÈ ÅäÅ«¿ÀÔ´Ï´Ù; µû¿ÈÇ¥¿¡ ½×¿© Àְųª, ÁßøµÈ °ýÈ£·Î º¸È£µÇ´Â
(protected) ½°Ç¥´Â ÀÎÀÚ¸¦ ºÐ¸®ÇÏÁö ¾Ê½À´Ï´Ù. ¸ÅÅ©·Î ¸íĪÀ» °Ë»ç (scan) ÇÒ ¶§,
¸ÅÅ©·Î ÀÎÀÚ (argument) ¾È¿¡ ÀÖ´Â ¸ÅÅ©·Î´Â È®ÀåµÇÁö ¾Ê½À´Ï´Ù.
È£Ãâ½Ã ÀÎÀÚ (argument) ÀÇ °³¼ö´Â ¸ÅÅ©·Î Á¤ÀÇ¿¡ ÀÖ´Â ¸Å°³º¯¼ö (parameter) ÀÇ °³¼ö¿Í
ÀÏÄ¡ÇØ¾ß¸¸ ÇÕ´Ï´Ù. È®Àå ÀÛ¾÷¿¡¼, °¢ ÀÎÀÚÀÇ ¾ÕµÚ¿¡ ÀÖ´Â °ø¹é¹®ÀÚ (white space) ´Â
Á¦°ÅµË´Ï´Ù. ±×·± ÈÄ¿¡, ÀÎÀÚ·Î ÁÖ¾îÁö´Â ÅäÅ«¿µéÀº, ¸ÅÅ©·ÎÀÇ Ä¡È¯ ÅäÅ«¿ (replacement
token sequence) ¿¡¼ ´ëÀÀÇÏ´Â ¸Å°³º¯¼ö (parameter) °¡ µû¿ÈÇ¥ ¾øÀÌ ³ª¿Ã ¶§¸¶´Ù
ġȯµË´Ï´Ù.
 |
 |
¢º ¿ªÀÚ ÁÖ
µû¿ÈÇ¥ ¾È¿¡ ÀÖ´Â ¸Å°³º¯¼ö´Â ¹®ÀÚ¿À̳ª ¹®ÀÚ»ó¼öÀÇ ÀϺηΠÃë±ÞµÇ±â
¶§¹®¿¡ È®ÀåµÇÁö ¾Ê½À´Ï´Ù. ¸¸¾à ÁÖ¾îÁö´Â ÀÎÀÚ¸¦ ¹®ÀÚ¿·Î ¸¸µé°íÀÚ ÇÒ¶§´Â
´ÙÀ½¿¡ ¼³¸íÇÏ´Â # ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. |
|
 |
 |
ġȯ ÅäÅ«¿¿¡ ³ª¿À´Â ¸Å°³º¯¼ö¿¡ # ³ª ## °¡ ºÙ¾îÀÖÁö ¾Ê´ÂÇÑ, ÀÎÀÚ·Î ÁÖ¾îÁö´Â
ÅäÅ«Àº ¸ÅÅ©·Î È£ÃâÀ» À§ÇØ °Ë»çµÇ°í, »ðÀÔ (insertion) µÇ±â Àü¿¡ Çʿ信 µû¶ó È®ÀåµË´Ï´Ù.
µÎ°³ÀÇ Æ¯º°ÇÑ ¿¬»êÀÚ°¡ ġȯ ÀÛ¾÷ (replacement process) ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
ù°, ġȯ ÅäÅ«¿ (replacement token sequence) ¿¡ ÀÖ´Â ¸Å°³º¯¼ö (parameter) ¾Õ¿¡
# °¡ ºÙ¾î ÀÖ´Ù¸é, ´ëÀÀÇÏ´Â ¸Å°³º¯¼ö ÁÖÀ§¿¡ ¹®ÀÚ¿ µû¿ÈÇ¥(")°¡ µé¾î°¡°í, # ¿Í
¸Å°³º¯¼ö ¸íĪÀÌ ÀÎÀÚ (argument) ·Î ġȯµË´Ï´Ù. (ÀÎÀÚ¿¡ Æ÷ÇÔµÈ, ¹®ÀÚ¿À̳ª ¹®ÀÚ»ó¼öÀÇ,
³»ºÎ ȤÀº ÁÖº¯¿¡ ÀÖ´Â " ³ª \ ¹®ÀÚ ¾Õ¿¡´Â \ °¡ Ãß°¡µË´Ï´Ù)
 |
 |
¢º ¿ªÀÚ ÁÖ
" ³ª \ ¹®ÀÚ¾Õ¿¡ \ ¸¦ Ãß°¡ÇØ ÁÖ´Â °ÍÀº, ÁÖ¾îÁø ¹®ÀÚ¸¦ È®Àå¿·Î
¸¸µé¾î ÁÖ±â À§Çؼ ÀÔ´Ï´Ù. |
|
 |
 |
µÑ°, µÎ Á¾·ùÀÇ ¸ÅÅ©·Î Á¤ÀÇ¿¡¼, ġȯ ÅäÅ«¿ (replacement token sequence)
ÀÌ ## ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÑ´Ù¸é, ¸Å°³º¯¼ö ġȯÀÌ ÀÏ¾î³ ÈÄ¿¡ °ð¹Ù·Î, ## ¿Í ¾çÂÊÀÇ
°ø¹é¹®ÀÚ (white space) °¡ Áö¿öÁ®¼, ÀÎÁ¢ÇÑ ÅäÅ«ÀÌ ¿¬°áµÇ¾î ÇϳªÀÇ ÅäÅ«ÀÌ Çü¼ºµË´Ï´Ù.
¸¸¾à, À¯È¿ÇÏÁö ¾ÊÀº ÅäÅ«ÀÌ »ý¼ºµÇ°Å³ª, °á°ú°¡ ## ¿¬»êÀÚÀÇ ÀÛ¾÷¼ø¼¿¡ µû¶ó ´Þ¶óÁö´Â
°æ¿ì¶ó¸é, ±× ¿µÇâÀº ¾Ë ¼ö ¾ø½À´Ï´Ù (undefined).
¶ÇÇÑ ## ´Â ġȯ ÅäÅ«¿ÀÇ
¸Ç¾ÕÀ̳ª ¸ÇµÚ¿¡ ³ªÅ¸³¯ ¼ö ¾ø½À´Ï´Ù.
µÎ Á¾·ùÀÇ ¸ÅÅ©·Î Á¤ÀÇ¿¡¼, ġȯ ÅäÅ«¿ (replacement token sequence) Àº
´Ù¸¥ ¸ÅÅ©·Î Á¤ÀÇ ¸íĪÀ¸·Î ¹Ýº¹Çؼ °Ë»ç (scan) µË´Ï´Ù. ÇÏÁö¸¸, ġȯ ÅäÅ«¿
¾È¿¡ ±× ÅäÅ«¿À» È®ÀåÇØÁÖ´Â ¸ÅÅ©·Î ¸íÀÌ µé¾î°¡ ÀÖ´Ù¸é (ÁßøµÈ ¸ÅÅ©·Î »çÀÌ¿¡
µé¾î ÀÖ´Ù°í ÇØµµ), Çѹø¸¸ È®ÀåµË´Ï´Ù. Áï, Àç°Ë»ç (rescan) ÇÒ ¶§ ±× ¸ÅÅ©·Î°¡ ´Ù½Ã
¹ß°ßµÈ´Ù°í ÇØµµ È®ÀåµÇÁö ¾Ê½À´Ï´Ù.
 |
 |
¢º ¿ªÀÚ ÁÖ
´ÙÀ½°ú °°Àº °æ¿ì¸¦ ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù.
#define char unsigned char
À§¿Í °°ÀÌ ¸ÅÅ©·Î°¡ Á¤ÀǵǾî ÀÖ´Ù¸é, ÇÁ·Î±×·¥ ¼Ò½º»óÀÇ char ´Â
unsigned char ·Î ġȯµË´Ï´Ù. ¸¸¾à À§¿¡¼ ¼³¸íÇÑ ±ÔÄ¢ÀÌ Á¸ÀçÇÏÁö
¾Ê´Â´Ù¸é, unsigned char ÀÇ ÀϺκÐÀÎ char °¡ ¶Ç ¸ÅÅ©·Î·Î ÀνĵǴÂ
ÀÏÀÌ ¹Ýº¹µÇ¹Ç·Î ¾ðÁ¨°¡´Â ½Ã½ºÅÛ ¿¡·¯·Î Àü󸮱â´ÉÀÌ Á¾·áµË´Ï´Ù.
ÇÏÁö¸¸ À§¿¡¼ À̾߱âÇÑ ±ÔÄ¢ÀÌ À̸¦ ¹æÁöÇØ Áֱ⠶§¹®¿¡ Çѹø¸¸
È®ÀåµÇ¾î unsigned char ±îÁö¸¸ È®ÀåÇØ ÁÝ´Ï´Ù.
#define ONE IS TWO
#define TWO ARE THREE TWO
#define THREE WERE ONE
¶ÇÇÑ ¿©·¯¹ø ÁßøµÈ ¸ÅÅ©·Î »çÀÌ¿¡¼µµ À§ÀÇ ±ÔÄ¢Àº
Á¦´ë·Î Àû¿ëµË´Ï´Ù. µû¶ó¼ À§¿Í °°ÀÌ ¸ÅÅ©·Î¸¦ Á¤ÀÇÇØ ³õÀº »óÅ¿¡¼,
ONE À» È£ÃâÇϸé Á¤È®Çϱâ IS ARE WERE ONE TWO ·Î¸¸ È®ÀåµË´Ï´Ù.
(´õ º¹ÀâÇÏ°Ô ¸¸µé¸é ´õ ÀëÀÖ½À´Ï´Ù ^^;) |
|
 |
 |
¸¸¾à ¸ÅÅ©·Î È®ÀåÀÇ ÃÖÁ¾ °á°ú°¡ # ·Î ½ÃÀÛÇÑ´Ù°í ÇØµµ, ÀÌ´Â Àü󸮱â
Áö½ÃÀÚ·Î Ãë±ÞµÇÁö ¾Ê½À´Ï´Ù.
| |
¸ÅÅ©·Î È®Àå ÀÛ¾÷ÀÇ »ó¼¼ÇÑ ³»¿ëÀº ÃÊÆÇº¸´Ù ANSI ¿¡¼
´õ ¼¼¹ÐÇÏ°Ô Á¤ÀÇÇß½À´Ï´Ù. °¡Àå Áß¿äÇÑ º¯È´Â, ¹®ÀÚ¿À» ¸¸µé¾î ÁÖ°í, ÅäÅ«À» ¿¬°áÇØ ÁÖ´Â
# ¿Í ## ¿¬»êÀÚ¸¦ Ãß°¡ÇÑ °ÍÀÔ´Ï´Ù. »õ ±ÔÄ¢Áß ÀϺÎ, ƯÈ÷ ÅäÅ« ¿¬°á°ú °ü·ÃµÈ ºÎºÐÀº
Á¶±Ý ƯÀÌÇÕ´Ï´Ù. (¾Æ·¡ ¿¹¸¦ º¸½Ã±â ¹Ù¶ø´Ï´Ù) |
¿¹¸¦ µé¾î, ¾Æ·¡¿Í °°Àº ¸ÅÅ©·Î´Â "manifest constant" ¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù.
#define TABSIZE 100
int table[TABSIZE];
¾Æ·¡¿Í °°Àº °æ¿ì´Â, µÎ ÀÎÀÚ »çÀÌÀÇ Â÷¸¦ Àý´ë°ªÀ¸·Î ¹ÝȯÇÏ´Â ¸ÅÅ©·Î¸¦ Á¤ÀÇÇØ ÁÝ´Ï´Ù.
#define ABSDIFF(a, b) ((a)>(b) ? (a)-(b) : (b)-(a))
µ¿ÀÏÇÑ ÀÏÀ» ´ã´çÇÏ´Â ÇÔ¼ö¿Í´Â ´Þ¸®, ¸ÅÅ©·Î·Î ÀÛ¼ºµÈ °æ¿ì¿¡´Â ÀÎÀÚ¿Í ¹Ýȯ°ªÀÌ
¾î¶°ÇÑ »ê¼úÇü (arithmetic type) À̳ª Æ÷ÀÎÅÍ (pointer) ¿©µµ »ó°ü¾ø½À´Ï´Ù.
¶ÇÇÑ ÁÖ¾îÁø ÀÎÀÚ´Â, °Ë»çÇϴµ¥ Çѹø, °ªÀ» »ý¼ºÇϴµ¥ Çѹø, ÃÑ µÎ¹ø Æò°¡µÇ¹Ç·Î
ºÎÀÛ¿ë (side effect) ÀÌ ¹ß»ýÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
´ÙÀ½°ú °°Àº Á¤Àǰ¡ ÁÖ¾îÁö¸é,
#define tempfile(dir) #dir "/%s"
¸ÅÅ©·Î È£Ãâ tempfile(/usr/tmp) ´Â ¾Æ·¡¿Í °°Àº °á°ú¸¦ »ý¼ºÇÕ´Ï´Ù.
"/usr/tmp" "/%s"
¶Ç À§ÀÇ °á°ú´Â ÇϳªÀÇ ¹®ÀÚ¿·Î ¿¬°áµË´Ï´Ù. ´ÙÀ½°ú °°Àº ¸ÅÅ©·Î°¡ Á¤ÀǵǸé,
#define cat(x, y) x ## y
cat(var,123) ¿Í °°Àº È£ÃâÀº var123 À̶ó´Â ÅäÅ«À» »ý¼ºÇÕ´Ï´Ù. ÇÏÁö¸¸,
cat(cat(1,2),3) ¿Í °°Àº È£ÃâÀº Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù (undefined).
## ÀÇ Á¸Àç´Â ¹Ù±ùÂÊ È£ÃâÀÇ ÀÎÀÚ°¡ È®ÀåµÇÁö ¾Êµµ·Ï ÇØÁÝ´Ï´Ù. µû¶ó¼
´ÙÀ½°ú °°Àº ÅäÅ«ÀÌ »ý¼ºµË´Ï´Ù.
cat ( 1 , 2 )3
¿©±â¼ ù¹øÂ° ÀÎÀÚÀÇ ¸¶Áö¸· ÅäÅ«°ú µÎ¹øÂ° ÀÎÀÚÀÇ Ã¹¹øÂ° ÅäÅ«ÀÌ ¿¬°áµÈ )3 Àº
Àû¹ýÇÏÁö ¾ÊÀº ÅäÅ«ÀÌ µË´Ï´Ù. ¸¸¾à ´ÙÀ½°ú °°ÀÌ µÎ´Ü°è¿¡ °ÉÃÄ ¸ÅÅ©·Î°¡ Á¤ÀǵǸé,
#define xcat(x,y) cat(x,y)
Á» ´õ À¯¿¬ÇÏ°Ô ÀÛµ¿ÇÕ´Ï´Ù; xcat ÀÇ È®Àå ÀÚü´Â ## ¿¬»êÀÚ¿Í °ü·ÃÀÌ
¾ø±â ¶§¹®¿¡, xcat(xcat(1, 2), 3) ´Â ¿Ã¹Ù¸£°Ô 123 À» »ý¼ºÇÕ´Ï´Ù.
 |
 |
¢º ¿ªÀÚ ÁÖ
xcat(xcat(1,2),3) ÀÇ È®Àå°úÁ¤Àº ´ÙÀ½°ú °°½À´Ï´Ù.
| ´Ü°è |
º¯È¯ °á°ú |
| 1. (¿ø·¡»óÅÂ) |
xcat(xcat(1,2),3) |
| 2. (ÀÎÀÚÈ®Àå) |
xcat(1,2)
cat(1,2)
12 |
| 3. |
cat(12,3) |
| 4. (¿Ï·á) |
123 |
À§¿¡¼, °¡Àå ¹Ù±ùÂÊ È£Ãâ xcat() ÀÇ µÎ ÀÎÀÚ´Â xcat(1,2) ¿Í 3 À̸ç,
ù¹øÂ° ÀÎÀÚÀÎ xcat(1,2) °¡ ¸ÅÅ©·Î È£ÃâÀ̹ǷΠġȯ ¸®½ºÆ®¿¡ »ðÀԵDZâ
Àü¿¡ ¿ÏÀüÈ÷ È®ÀåµË´Ï´Ù.
xcat(cat(1,2),3) ¿ª½Ã À§¿Í µ¿ÀÏÇÑ °úÁ¤À» °ÅÃÄ, 123 À¸·Î ¿ÏÀüÈ÷
È®ÀåµË´Ï´Ù. ÇÏÁö¸¸, cat(xcat(1,2),3) ÀÇ °æ¿ì¿¡´Â, ù¹øÂ° ÀÎÀÚÀÎ
xcat(1,2) °¡ ## ÀÇ ¿µÇâÀ» Á÷Á¢ ¹Þ¾Æ¼ È®ÀåµÇÁö ¾Ê±â ¶§¹®¿¡,
cat(cat(1,2),3) ¿Í ¸¶Âù°¡Áö·Î À¯È¿ÇÏÁö ¾ÊÀº ÅäÅ«À» »ý¼ºÇÏ°Ô µË´Ï´Ù
(undefined behavior). |
|
 |
 |
À¯»çÇϰÔ, ABSDIFF(ABSDIFF(a,b),c) ´Â ¿¹»óµÇ´Â´ë·Î ¿ÏÀüÇÏ°Ô È®ÀåµÈ
°á°ú¸¦ »ý¼ºÇÕ´Ï´Ù.
|