¿À¹ö·Îµù(Overloading)À̶õ °°Àº À̸§À¸·Î ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇÏ´Â °ÍÀÌ´Ù. ¶È°°Àº ÀÏÀ» Ç쵂 ÀμöÀÇ Çü½ÄÀ̳ª ±¸Çö ¹æ½ÄÀÌ Á¶±Ý ´Ù¸¥ ÇÔ¼öµéÀ» ¸¸µé¾î¾ß ÇÑ´Ù¸é µ¿ÀÏÇÑ À̸§À¸·Î ÇÔ¼öµéÀ» ¿À¹ö·ÎµùÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ Add ÇÔ¼ö°¡ ¿À¹ö·ÎµùÀÇ °¡Àå ÀüÇüÀûÀÎ ¿¹¿¡ ÇØ´çÇÑ´Ù.
|
¿¹ Á¦ : Overload |
#include <Turboc.h>
int Add(int a, int b);
int Add(int a, int b, int c);
double Add(double a, double b);
void main()
{
printf("1+2=%d\n",Add(1,2));
printf("3+4+5=%d\n",Add(3,4,5));
printf("1.414+2.54=%f\n",Add(1.414,2.54));
}
int Add(int a, int b)
{
return a+b;
}
int Add(int a, int b, int c)
{
return a+b+c;
}
double Add(double a, double b)
{
return a+b;
}
¼¼ °³ÀÇ Add ÇÔ¼ö°¡ °°Àº À̸§À¸·Î Á¤ÀǵǾî Àִµ¥ ¹Þ¾ÆµéÀÌ´Â ÀμöÀÇ °³¼ö³ª ŸÀÔÀÌ °¢°¢ ´Ù¸£´Ù. Á¤¼ö µÑÀ» Àμö·Î ¹Þ¾ÆµéÀÌ´Â Add(int, int), Á¤ ¼ö ¼ÂÀ» ÃëÇÏ´Â Add(int, int, int)°¡ ÀÖ°í ½Ç¼ö¸¦ Àμö·Î ÃëÇÏ´Â Add(double, double)ÀÌ ÀÖ´Ù. ÀÌ ÇÔ¼öµéÀº Àμö ¸ñ·Ï¸¸ ´Ù¸¦ »ÓÀÌÁö ÇÔ¼öÀÇ µ¿ÀÛÀº ¸ðµÎ ÀμöÀÇ ÇÕÀ» °è»êÇÑ´Ù´Â ¸é¿¡¼ µ¿ÀÏÇÏ¸ç ±×·¡¼ ÇÔ¼öÀÇ À̸§µµ ¶È°°´Ù. ¼¼ ÇÔ¼ö ¸ðµÎ Add¶ó´Â °°Àº À̸§À¸·Î Áߺ¹ Á¤ÀǵǾî ÀÖ´Â °ÍÀÌ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
1+2=3
3+4+5=12
1.414+2.54=3.954000
Á¤¼ö µÑÀÇ ÇÕ, ¼ÂÀÇ ÇÕ, ±×¸®°í ½Ç¼ö µÑÀÇ ÇÕÀÌ Á¦´ë·Î °è»êµÇ¾ú´Ù. ¼¼ Add ÇÔ¼öµéÀº À̸§ÀÌ µ¿ÀÏÇÏÁö¸¸ Àμö ¸ñ·ÏÀÌ ´Ù¸£±â ¶§¹®¿¡ ¸ðÈ£ÇÏÁö ¾ÊÀ¸¸ç ÄÄÆÄÀÏ·¯´Â È£ÃâºÎÀÇ ÀμöµéÀ» º¸°í ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. ÄÄÆÄÀÏ·¯ÀÇ ÀÌ·± ±â´ÉÀ» ¿À¹ö·ÎµùÀ̶ó°í Çϴµ¥ ÀÌ ±â´ÉÀº C++¿¡¼ »õ·Î Ãß°¡µÈ °ÍÀ̸ç C¾ð¾î¿¡´Â ¾ø´ø ±â´ÉÀÌ´Ù. C¾ð¾î¿¡¼ ÀÌ·± ÇÔ¼ö ÁýÇÕÀ» ¸¸µé·Á¸é ÇÔ¼öÀÇ À̸§À» ´Ù¸£°Ô ÀÛ¼ºÇØ¾ß ÇÑ´Ù.
int AddInt2(int a, int b);
int AddInt3(int a, int b, int c);
double AddDouble2(double a, double b);
C¾ð¾î´Â ÇÔ¼ö¸¦ À̸§¸¸À¸·Î ±¸º°Çϱ⠶§¹®¿¡ ÀμöÀÇ Å¸ÀÔ¸¸ ´Ù¸¥ ÇÔ¼ö ÁýÇÕÀ» °°Àº À̸§À¸·Î Á¤ÀÇÇÒ ¼ö ¾ø¾ú°í ¹Ýµå½Ã ´Ù¸¥ À̸§À» ÁÖ¾î¾ß Çß´Ù. ±×·¡¼ C Ç¥ÁØ ÇÔ¼ö Áß¿¡ Àý´ë°ªÀ» ±¸ÇÏ´Â ÇÔ¼ö°¡ int, long, double¿¡ ´ëÇØ abs, labs, fabs ¼¼ °¡Áö³ª Á¤ÀǵǾî ÀÖ´Ù. ¶È°°Àº µ¿ÀÛÀ» ÇÏ´Â ÇÔ¼öÀÓ¿¡µµ ºÒ±¸Çϰí À̸§À» µû·Î ÁÖ°í »ç¿ëÇÒ ¶§µµ Àμö ŸÀÔ¿¡ µû¶ó ÇÔ¼ö¸¦ °ñ¶ó ½á¾ß ÇÏ´Ï ¾ó¸¶³ª ºÒÆíÇÏ°í ºñÇÕ¸®ÀûÀΰ¡? ÇÁ·Î±×·¡¸Ó°¡ ÀÌ·± ÇÔ¼öµéÀÇ À̸§À» ±â¾ïÇØ¾ß ÇÑ´Ù¸é ¾È±×·¡µµ ºÎÁ·ÇÑ Ã¼·Â°ú Áö¼ºÀ» ¼Ò¸ðÇÏ°Ô µÉ °ÍÀÌ´Ù.
C++Àº À̸§ÀÌ °°¾Æµµ ÀμöÀÇ Å¸ÀÔÀÌ ´Ù¸£¸é °°Àº À̸§À¸·Î ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇÒ ¼ö ÀÖ¾î ÀÌ·± ºÒÆíÇÔÀÌ ¾ø¾îÁ³´Ù. C++ ÄÄÆÄÀÏ·¯´Â À̸§ÀÌ °°´õ¶óµµ È£ÃâºÎ¿¡¼ ¾î¶² Àμö¸¦ Àü´ÞÇߴ°¡¸¦ º¸°í ÀûÇÕÇÑ ÇÔ¼ö¸¦ °ñ¶óÁØ´Ù. À§ ¿¹Á¦¿¡¼ Add(1,2)´Â µÎ Àμö°¡ ¸ðµÎ Á¤¼öÇüÀ̹ǷΠAdd(int, int) ÇÔ¼ö°¡ È£ÃâµÇ¸ç Add(1.414, 2.54)´Â µÎ Àμö°¡ ¸ðµÎ ½Ç¼öÇüÀ̹ǷΠAdd(double, double) ÇÔ¼ö°¡ È£ÃâµÈ´Ù. ¶ÇÇÑ ÄÄÆÄÀÏ·¯´Â ½ÇÀμöÀÇ Å¸ÀÔ°ú Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÏ´Â ÇÔ¼ö°¡ ¾øÀ» °æ¿ì »ê¼ú º¯È¯±îÁö °í·ÁÇÏ¿© ÀûÇÕÇÑ ÇÔ¼ö¸¦ ã¾ÆÁØ´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.
short a=1,b=2,c;
c=Add(a,b);
µÎ °³ÀÇ shortÇü º¯¼ö¸¦ Àμö·Î Àü´ÞÇߴµ¥ ÀÌ °æ¿ì Add(short, short) ÇÔ¼ö´Â Á¤ÀǵǾî ÀÖÁö ¾ÊÁö¸¸ shortÇüÀº intÇüÀ¸·Î ÀÚµ¿ »ó½Â º¯È¯ °¡´ÉÇϹǷΠAdd(int, int) ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀÌ´Ù. ¸¶Âù°¡Áö·Î Add(1.1F,2.2F)µµ Add(double, double)·Î ÀÚµ¿ º¯È¯µÇ¾î È£ÃâµÈ´Ù. ÄÄÆÄÀÏ·¯°¡ ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀΰ¡´Â ½ÇÀμöÀÇ Å¸ÀÔÀ¸·Î °áÁ¤ÇÑ´Ù. ¸¸¾à À§ ¿¹Á¦¿¡ Add(long a, long b) ÇÔ¼ö°¡ ´õ Á¤ÀǵǾî ÀÖÀ» °æ¿ì Add(1,2)´Â ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÉ±î? »ó¼ö 1, 2´Â Á¤¼öÇüÀ¸·Î Æò°¡µÇ±â ¶§¹®¿¡ Add(int, int)°¡ È£ÃâµÇ¸ç ¸¸¾à Add(1L,2L)·Î Ç¥±âÇÑ´Ù¸é À̶§´Â Add(long, long) ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀÌ´Ù.
¿À¹ö·ÎµùµÈ ÇÔ¼ö¸¦ Á¤È®ÇÏ°Ô È£ÃâÇÏ·Á¸é ¿øÇÏ´Â ÀμöÀÇ Å¸ÀÔÀ» ¸íÈ®È÷ ¹àÇô¾ß ÇÑ´Ù. ±×·¡¼ »ó¼ö¿¡µµ L, U, F µûÀ§ÀÇ Á¢¹Ì¾î¸¦ ºÙ¿© ŸÀÔÀ» ÁöÁ¤ÇÏ´Â ¹®¹ýÀÌ ÀÖÀ¸¸ç ŸÀÔÀ» ±¸ºÐÇÏÁö ¸øÇÏ´Â #defineº¸´Ù ŸÀÔÀ» ±¸ºÐÇÏ´Â const°¡ ´õ ¿ì¿ùÇÑ °ÍÀÌ´Ù.
Áߺ¹ Á¤ÀǵǾî ÀÖ´Â ÇÔ¼ö Áß¿¡ ÀÏÄ¡Çϴ ŸÀÔÀÌ ¹ß°ßµÇÁö ¾ÊÀ» °æ¿ì´Â ¿¡·¯·Î 󸮵ȴÙ. Add("string","two")´Â ´ëÀÀµÇ´Â ÇÔ¼ö°¡ ¾øÀ¸¹Ç·Î ´ç¿¬È÷ ¿¡·¯ÀÌ´Ù. ÀÌ·± ¿¡·¯¿Ü¿¡µµ º¯È¯ÀÌ ¸ðÈ£ÇÑ °æ¿ìµµ ÄÄÆÄÀÏ·¯°¡ Á¤È®ÇÑ ÇÔ¼ö¸¦ ãÁö ¸øÇϹǷΠ¿¡·¯·Î 󸮵ȴÙ. ¿¹¸¦ µé¾î Add(2.34, 5) È£ÃâÀÇ °æ¿ì ù ¹øÂ° Àμö´Â double, µÎ ¹øÂ° Àμö´Â int·Î Á¤ÀǵǾî ÀÖ´Ù. ÀÌ °æ¿ì ÄÄÆÄÀÏ·¯´Â »ó½Â º¯È¯À» ÇØ¼ Add(double, double)À» È£ÃâÇÒ °ÍÀÎÁö ¾Æ´Ï¸é Çϰ º¯È¯À» ÇØ¼ Add(int, int)¸¦ È£ÃâÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÒ ¼ö°¡ ¾ø´Ù.

¾î¶² º¯È¯À̵çÁö ´ëÃæ ºñ½ÁÇÑ ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖÀ» °Í °°Áö¸¸ ÄÄÆÄÀÏ·¯´Â ¸ðÈ£ÇÑ »óȲ¿¡ ´ëÇØ¼´Â ¾î¶°ÇÑ Ã¥ÀÓµµ Áú ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁÙ ¼ö¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù. ÄÄÆÄÀÏ·¯´Â ¸ðÈ£ÇÑ »óȲÀ» Á¦ÀÏ ½È¾îÇÏ¸ç ±ØµµÀÇ °ÅºÎ°¨À» ¿¡·¯ ¸Þ½ÃÁö·Î Ç¥ÇöÇϴµ¥ ÀÌ ¿¡·¯ ¸Þ½ÃÁö´Â È®ÀÎÀ» ¿ä±¸ÇÏ´Â °·ÂÇÑ ±Ç°íÀÎ ¼ÀÀÌ´Ù. ÀÌ·± °æ¿ì´Â Add((int)2.34, 5)³ª Add(2.34, (double)5)·Î È£Ãâ¹®À» ¹Ù²Ù¾î Á¤È®ÇÏ°Ô ¾î¶² ÇÔ¼ö°¡ È£ÃâµÇ±â¸¦ ¹Ù¶õ´Ù´Â ÀÇ»ç Ç¥½Ã¸¦ ºÐ¸íÈ÷ ÇØ¾ß ÇÑ´Ù.
°°Àº À̸§À» °¡Áö°í ³í¸®ÀûÀ¸·Î À¯»çÇÑ µ¿ÀÛÀ» ÇÏÁö¸¸ ³»ºÎ ±¸ÇöÀÌ ¿ÏÀüÈ÷ ´Ù¸¥ °æ¿ìµµ ÀÖ´Ù. ¹®ÀÚ¿¿¡ ´ëÇÑ Add(src1, src2) ÇÔ¼ö´Â µÎ °³ÀÇ ¹®ÀÚ¿À» ¿¬°áÇϱâ À§ÇØ ³»ºÎÀûÀ¸·Î strcat ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. + ¿¬»êÀÚ¸¦ »ç¿ëÇÏ´Â ¼öÄ¡Çü°ú´Â Äڵ尡 »ó´çÈ÷ ´Ù¸£¸ç ±×·¡¼ Á¤È®ÇÑ ÇÔ¼ö°¡ È£ÃâµÇµµ·Ï ÇÏ´Â °ÍÀÌ Áß¿äÇÏ´Ù. ¶ÇÇÑ ¼³»ç ¹®¹ýÀûÀÎ ¹®Á¦´Â ¾ø´õ¶óµµ ´ÙÀ½°ú °°Àº ¿À¹ö·Îµùµµ ÁÖÀǰ¡ ÇÊ¿äÇÏ´Ù.
|
¿¹ Á¦ : PtrOverload |
#include <Turboc.h>
void f(int a) { printf("int : %d\n",a); }
void f(int *a) { printf("pointer : %p\n",a); }
void main()
{
int i=1234,*pi=&i;
f(i);
f(pi);
f(NULL);
}
Á¤¼öÇü Àμö¸¦ Àü´Þ¹Þ´Â f¿Í Á¤¼öÇü Æ÷ÀÎÅ͸¦ Àü´Þ¹Þ´Â f°¡ ¿À¹ö·ÎµùµÇ¾î ÀÌ´Ù. f(i), f(pi)¿¡ ´ëÇØ ¾î¶² ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀΰ¡´Â ¸íÈ®ÇÏÁö¸¸ f(NULL)¿¡ ´ëÇØ¼ ¾î¶² ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀΰ¡´Â ´Ù¼Ò ¾Ö¸ÅÇÏ´Ù. NULLÀº Ư¼öÇÑ Æ÷ÀÎÅÍ »ó¼ö·Î »ç¿ëµÇÁö¸¸ ÀÌ ¿¹Á¦¸¦ ½ÇÇàÇØ º¸¸é f(int) ÇÔ¼ö°¡ È£ÃâµÈ´Ù. C++¿¡¼ NULLÀº Æ÷ÀÎÅÍ Å¸ÀÔÀÌ ¾Æ´Ï¶ó Á¤¼ö »ó¼ö 0À¸·Î Á¤ÀǵǾî Àֱ⠶§¹®ÀÌ´Ù. ¸¸¾à NULL¿¡ ´ëÇØ f(int *)¸¦ È£ÃâÇÏ°í ½Í´Ù¸é f((int *)NULL)·Î ½ÇÀμö¸¦ Æ÷ÀÎÅÍ Å¸ÀÔÀ¸·Î ij½ºÆÃÇÑ ÈÄ È£ÃâÇØ¾ß ÇÑ´Ù. ¿À¹ö·ÎµùÀº ¾ÆÁÖ Æí¸®ÇÑ ¹®¹ýÀÌÁö¸¸ ÀÌó·³ ¶æÇÏÁö ¾Ê°Ô ¾û¶×ÇÑ ÇÔ¼ö°¡ È£ÃâµÇ´Â °æ¿ì°¡ ÀÖÀ¸¹Ç·Î ²À ÇÊ¿äÇÒ ¶§ Á¶½É½º·´°Ô »ç¿ëÇØ¾ß ÇÑ´Ù.
Âü°í·Î Áö±Ý ´çÀåÀº ÇÊ¿ä¾ø°ÚÁö¸¸ Â÷ÈÄ À©µµ¿ìÁî ȯ°æ¿¡¼ DLLÀ» ¸¸µé ¶§¸¦ ´ëºñÇØ¼ extern "C" Áö½ÃÀÚ¿¡ ´ëÇØ ¾Ë¾Æ µÎÀÚ. C»Ó¸¸ ¾Æ´Ï¶ó ¸ðµç ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ¸ñÀû ÆÄÀÏ(obj)À» ¸¸µé°í ¸µÅ©¿¡ ÀÇÇØ ¸ñÀû ÆÄÀÏÀ» ¿¬°áÇÔÀ¸·Î½á ÃÖÁ¾ ½ÇÇà ÆÄÀÏÀ» ¸¸µç´Ù. À̶§ ¸ñÀû ÆÄÀÏ·Î ÀÚ½ÅÀÌ Á¤ÀÇÇÑ ÇÔ¼öÀÇ ¸íΰú ÁÖ¼Ò¸¦ °ø°³Çϵµ·Ï µÇ¾î ÀÖ°í ÀÌ ¸íĪ °ø°³ ¹æ½ÄÀÌ ¾ð¾î¿¡ »ó°ü¾ø´Â Ç¥ÁØ Æ÷¸ËÀ¸·Î ±ÔÁ¤µÇ¾î ÀÖ´Ù. ±×·¡¼ C¿Í ÆÄ½ºÄ®Ã³·³ °¢°¢ ´Ù¸¥ ¾ð¾î·Î ÄÄÆÄÀÏµÈ ¿ÀºêÁ§Æ® ÆÄÀϵéÀÌ ¸µÅ©µÉ ¼ö ÀÖ´Â °ÍÀÌ´Ù.
ÃʱâÀÇ C++µµ ¸¶Âù°¡Áö·Î ÀÌ·± ¹ü¿ë ¸µÄ¿(linker)¸¦ »ç¿ëÇϵµ·Ï µðÀÚÀεǾú´Ù. ±×·±µ¥ ¹ü¿ë ¸µÄ¿´Â ÇÔ¼ö¸¦ ¿À·ÎÁö À̸§À¸·Î¸¸ ã±â ¶§¹®¿¡ C++ÀÇ ¿À¹ö·ÎµùµÈ ÇÔ¼öµéÀ» Á¦´ë·Î ±¸ºÐÇÏÁö ¸øÇÑ´Ù. ±×·¡¼ C++Àº ÇÔ¼öÀÇ À̸§À» ¿ÜºÎ·Î °ø°³ÇÒ ¶§ ÀμöÀÇ °³¼ö¿Í ŸÀÔ¿¡ ´ëÇÑ Á¤º¸±îÁö ÇÔ¼ö¸í¿¡ Æ÷ÇÔ½Ã۴µ¥ ÀÌ·± ¸íĪÀ» ÀÛ¼ºÇÏ´Â °ÍÀ» À̸§ Àå½Ä(name mangling)À̶ó°í ÇÑ´Ù. ±×·¡¼ C++·Î ÄÄÆÄÀÏÇÑ ¸ñÀû ÆÄÀÏÀÇ ÇÔ¼ö¸íÀ» º¸¸é ÇÔ¼ö À̸§¿Ü¿¡µµ ¾ÕµÚ·Î ÀÌ»óÇÑ ±âÈ£µéÀÌ ºÙ¾î ÀÖ´Ù. ¾Õ¿¡¼ ¸¸µç Overload.cppÀÇ ¸ñÀû ÆÄÀÏ¿¡´Â ¼¼ °³ÀÇ AddÇÔ¼öÀÇ À̸§ÀÌ ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÈ´Ù.
?Add@@YANNN@Z
?Add@@YAHHHH@Z
?Add@@YAHHH@Z
Add¶ó´Â ÇÔ¼ö À̸§ ¿Ü¿¡µµ µÚÂÊ¿¡ ÀμöÀÇ °³¼ö³ª ŸÀÔ¿¡ ´ëÇÑ Á¤º¸µéÀÌ ºÎȣȵǾî Ç¥±âµÇ¾î ÀÖ´Ù. ¿À¹ö·ÎµùµÈ ÇÔ¼öµéÀÇ ¿ÜºÎ ¸íĪÀÌ ÀÌ·¸°Ô ÀÛ¼ºµÇ¹Ç·Î ¸µÅ© ´Ü°è¿¡¼´Â °¢ ÇÔ¼öµéÀÌ ´Ù¸¥ ÇÔ¼öó·³ ÀνĵǴ °ÍÀÌ´Ù. ±×·±µ¥ ¸ðµç ¾ð¾î°¡ ¿À¹ö·ÎµùÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ C++ÀÇ ÀÌ·± ±â´ÉÀÌ ´Ù¸¥ ¾ð¾î¿Í È¥ÇÕ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§´Â ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù. ±×·¡¼ ´Ù¸¥ ¾ð¾î¿Í ¸µÅ©µÇ¾î¾ß ÇÏ´Â ¸ðµâÀº ÀÌ·± À̸§À» ÀÛ¼ºÇÏÁö ¸»°í ÇÔ¼öÀÇ ¸íĪÀ» À̸§¸¸À¸·Î ¿ÜºÎ·Î °ø°³ÇÒ Çʿ䰡 ÀÖ´Ù.
À̶§ »ç¿ëÇÏ´Â Áö½ÃÀÚ°¡ ¹Ù·Î extern "C"ÀÌ´Ù. ÇÔ¼ö¾Õ¿¡ ÀÌ Áö½ÃÀÚ¸¦ »ç¿ëÇÏ¸é ¿À¹ö·Îµù ±â´ÉÀº »ç¿ëÇÒ ¼ö ¾øÁö¸¸ ´Ù¸¥ ¾ð¾î¿Í ¸µÅ©µÉ ¼ö ÀÖ´Â ¹ü¿ë ÇÔ¼ö¸¦ ¸¸µé ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ¸¸µé¾îÁø ÇÔ¼ö´Â C¿¡¼µµ È£Ãâ °¡´ÉÇÏ´Ù. Áö±Ý ´çÀå ¿©·¯ºÐµéÀÌ ÀÌ Áö½ÃÀÚ¸¦ »ç¿ëÇÒ ÀÏÀº ¾ø°ÚÁö¸¸ Â÷ÈÄ¿¡ À©µµ¿ìÁî ȯ°æ¿¡¼ DLLÀ» ¸¸µé°Å³ª ÇÒ ¶§´Â ÀÌ Áö½ÃÀÚ°¡ ÇÊ¿äÇÒ °ÍÀÌ´Ù. À©µµ¿ìÁîÀÇ DLL Æ÷¸ËÀº À̸§À¸·Î ÇÔ¼ö¸¦ ã±â ¶§¹®¿¡ ¿À¹ö·ÎµùÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù.
extern "C" Áö½ÃÀÚ´Â C++ÀÌ C³ª ´Ù¸¥ ¾ð¾î¸¦ À§ÇØ À̸§ Àå½ÄÀ» ÇÏÁö ¾Êµµ·Ï ÇÒ ¶§ »ç¿ëÇϱ⵵ ÇÏÁö¸¸ ¹Ý´ëÀÇ °æ¿ì¿¡µµ ÀÌ Áö½ÃÀÚ°¡ ÇÊ¿äÇÏ´Ù. Áï, ÀÌ¹Ì C·Î ¸¸µé¾îÁø ÇÔ¼ö¸¦ C++¿¡¼ È£ÃâÇϰíÀÚ ÇÒ ¶§ ÀÌ ÇÔ¼öÀÇ ¿øÇü ¾Õ¿¡ extern "C"°¡ ÀÖ¾î¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸µÄ¿°¡ Àå½ÄµÈ À̸§À¸·Î ÇÔ¼ö¸¦ ã°Ô µÇ¹Ç·Î CÀÇ ÇÔ¼ö¸¦ Á¦´ë·Î ¿¬°áÇÏÁö ¸øÇÑ´Ù. C++·Î¸¸ ÇÔ¼ö¸¦ ÀÛ¼ºÇÑ´Ù¸é ±»ÀÌ ÀÌ Áö½ÃÀÚ¸¦ »ç¿ëÇÒ Çʿ䰡 ¾ø´Ù.