³ª´Â ȸ»çÀÇ Äڵ带 © ¶§, ±× ÀÏ¿¡ Àç¹Ì¸¦ ºÒ¾î
³Ö±â À§Çؼ ¿©·¯ °¡Áö Àå³(?)À» Ä¡°ï ÇÑ´Ù. ¿¹¸¦
µé¸é, NULL·Î ÁöÁ¤ÇÑ class instance¸¦ ÅëÇؼ class
¸â¹ö¸¦ È£ÃâÇÏ´Â ¹æ¹ýÀ» ¾´´Ù°Å³ª(Á¶°Ç¸¸ ¸ÂÀ¸¸é ÃæºÐÈ÷
°¡´ÉÇÏ´Ù.) °¡Àå Áß¿äÇÑ º¯¼ö À̸§Àº smgal·Î ¾´´Ù°Å³ª
exception ¹ß»ý½Ã roll-back¿ë goto ¹®¿¡´Â ÀϺ»¾î
Àǹ̷ΠµÈ labelÀ» ¾²´Ù°Å³ª ¾Æ¹«µµ º¸Áö ¾ÊÀ» ±í¼÷ÇÑ
ÄÚµå´Â macro·Î ÇÔ¼ö È®ÀåÀ» ÇѴٰųª(°¡µ¶¼ºÀº ÇöÀúÈ÷
¶³¾îÁöÁö¸¸ °³¹ß ¼Óµµ´Â »¡¶óÁü)ÇÏ´Â ¹æ¹ýÀ» ÅëÇØ ¾ÆÁÖ
¼Ò±ØÀûÀÎ ¹æ¹ýÀÇ Áñ°Å¿òÀ» ¾ò°ïÇÑ´Ù.
¾î¶»°Ô Çؼ ¾Ë°ÔµÇ¾ú´ÂÁö´Â ¸ð¸£°ÚÁö¸¸ ³»°¡ Á¾Á¾
Äڵ忡 Áý¾î ³Ö´Â Àå³ Áß¿¡ Çϳª°¡ ´ÙÀ½°ú °°Àº °ÍÀÌ´Ù.
ÀÌ ¿¹Á¦¿¡¼´Â ´õ¿í ´õ Çò°¥¸®°Ô Çϱâ À§Çؼ ±Ø´ÜÀûÀ¸·Î
Äڵ带 ¸¸µé¾î º¸¾Ò´Ù.
01: smgal@smgal> gcc --version
02: gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)
03: Copyright (C) 2004 Free Software Foundation, Inc.
04: This is free software; see the source for copying conditions.
05: There is NO warranty; not even for MERCHANTABILITY or FITNESS
06: FOR A PARTICULAR PURPOSE.
07:
08:
09: smgal@smgal> cat weird.c
10:
11: #include <stdio.h>
12:
13: int main()
14: {
15: int _[] = {1}, o=0;
16: printf("%d\n", _<:o]^o^o^o^o);
17:
18: return 0;
19: }
20:
21:
22: smgal@smgal> gcc weird.c -o weird.exe
23:
24: smgal@smgal> ./weird.exe
25: 1
26:
27: smgal@smgal> gcc weird.c -std=c89
28: weird.c: In function `main':
29: weird.c:7: error: parse error before ':' token
À§ÀÇ ¸®½ºÆ®´Â linux(½ÇÁ¦·Î´Â cygwinÀÌÁö¸¸)ÀÇ
Äֿܼ¡ ³ªÅ¸³ Ãâ·ÂÀ» ³ªÅ¸³½ °ÍÀÌ´Ù.
01~06: Å×½ºÆ® ÇÏ·Á´Â gccÀÇ ¹öÀüÀ» È®ÀÎÇÑ´Ù. 3.4.4ÀÌ´Ù.
09~18: Å×½ºÆ®ÇÏ·Á´Â c ÆÄÀÏÀÇ ³»¿ëÀ» È®ÀÎÇÑ´Ù.
(cpp·Î Çصµ µ¿ÀÏÇÏ´Ù) ÀÏ´Ü ÁÖ¸ñÇØ¾ß ÇÒ °÷Àº 16¹ø°
ÁÙÀÌ´Ù. ¸¶Ä¡ À̸ðƼÄÜ°ú °°Àº °ÍÀÌ printfÀÇ µÎ ¹ø
° ÆĶó¹ÌÅÍ·Î ºÙ¾î ÀÖ´Ù´Â °ÍÀÌ ³»°¡ ¸»ÇÏ°íÀÚ ÇÏ´Â
µµ¿ò ¾ÈµÇ´Â ¹®¹ýÀ» ÀÀ¿ëÇÑ °ÍÀÌ´Ù.
22: gcc¸¦ ÅëÇØ ¹®Á¦ÀÇ ÆÄÀÏÀ» ÄÄÆÄÀÏ Çغ»´Ù. ±×·±µ¥
¾Æ¹«·± ¿¡·¯ ¾øÀÌ ºôµå°¡ µÇ¾ú´Ù.
24~25: ½ÇÇàÀ» ½ÃÄÑ º¸¸é ±× °á°ú °ªµµ Ãâ·ÂµÇ°í
ÀÖ´Ù.
¹®Á¦°¡ µÇ´Â _<:o]^o^o^o^o¸¦
ºôµåÇÒ ¼ö ÀÖ´Â ÀÌÀ¯´Â, ÀÌ ¼±¾ðÀÌ C99¿¡¼´Â ÀüÇô
¹®Á¦°¡ µÇÁö ¾Ê´Â ¹®¹ýÀ̱⠶§¹®ÀÌ´Ù. '_'´Â º¯¼ö À̸§À¸·Î
°¡´ÉÇÑ ¹®ÀÚÀ̸ç 15¹ø ° ÁÙ¿¡¼ ¹è¿ÀÇ À̸§À¸·Î ¼±¾ðÇß±â
¶§¹®¿¡ ¹®Á¦°¡ ¾ø´Â °ÍÀÌ°í, '^o'ÀÇ °æ¿ì¿¡µµ xor¸¦
¶æÇÏ´Â '^'¿Í º¯¼ö 'o'ÀÇ Á¶ÇÕÀ̱⠶§¹®¿¡ ¾Æ¹«·± ÇÏÀÚ°¡
¾ø´Ù. ±×·¯¸é ³²´Â °ÍÀº '<:o]'ÀÌ´Ù. À§Ä¡ »óÀ¸·Î´Â
¹è¿¿¡ Á¢±ÙÇϱâ À§ÇØ À妽º¸¦ ³Ö´Â ºÎºÐÀÌ ¿Í¾ßÇÑ´Ù.
±×·±µ¥ ÀÌ°ÍÀº ÈçÈ÷ º¸´ø °Í°ú´Â ´Ù¸£´Ù. ÀÏ´Ü ´äºÎÅÍ
À̾߱â ÇÏÀÚ¸é C99ºÎÅÍ´Â '<:'´Â '['¿Í µ¿ÀÏÇÏ°í
':>'´Â ']'¿Í µ¿ÀÏÇϱ⠶§¹®ÀÌ´Ù. µû¶ó¼ '[o]'
== '<:o:>' == '<:o]'°¡ µÈ´Ù.
±×·¸´Ù¸é ÀÌ cÆÄÀÏÀ» ANSI-C·Î ºôµåÇÏ¸é ¾î¶»°Ô
µÉ±î. 27~29°¡ ±×°ÍÀ» ½ÇÇèÇÑ °á°úÀÌ´Ù. ¿ª½Ã ¿¹»ó´ë·Î
¿¡·¯°¡ ¹ß»ýÇß´Ù.
ÀÌ ½ÇÇèÀ» linux·Î º¸¿©ÁØ °ÍÀº gcc°¡ C99¸¦ Á¦´ë·Î
Áö¿øÇÏ°í Àֱ⠶§¹®À̸ç VC++ 6.0Àº C99¸¦ Áö¿øÇÏ°í
ÀÖÁö ¾Ê±â ¶§¹®¿¡ ¹«Á¶°Ç ¿¡·¯·Î¸¸ 󸮵ȴÙ. (¿É¼ÇÀÌ
ÀÖ´ÂÁö´Â Àß ¸ð¸£°Ú´Ù) ¿Ö ÀÌ·± °Íµµ C Ç¥ÁØ¿¡ Çã¿ëÇÏ°Ô
µÇ¾ú´ÂÁö ±× ¹è°æÀº ¾ËÁö ¸øÇÑ´Ù. ±×³É °¡µ¶¼º¿¡ È¥¶õ¸¸
ÁÖ´Â °ÍÀÌ ¾Æ´Ñ°¡ »ý°¢µÇ±âµµ Çϴµ¥, ±×·¡µµ ÈǸ¢ÇϽÅ
ºÐµéÀÌ Ã¼ÅÃÇϽŠ°ÍÀÌ´Ï ¸¸Å ¹º°¡ ½É¿ÀÇÑ ¶æÀÌ ÀÖÁö´Â
¾ÊÀ»±î »ý°¢µÈ´Ù.
|