´ÙÀ½Àº ³×ÀÓ ½ºÆäÀ̽º¿Í ³×ÀÓ ½ºÆäÀ̽º ³»ºÎ¿¡ ¸íĪÀ» ÀÛ¼ºÇÏ´Â ±ÔÄ¢¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. Áö±ØÈ÷ »ó½ÄÀûÀÎ ³»¿ëµéÀ̹ǷΠÇÑ ¹ø¾¿ ÀÐ¾î º¸±â¸¸ ÇÏ¸é µÈ´Ù.
³×ÀÓ ½ºÆäÀ̽ºÀÇ À̸§µµ ÀÏÁ¾ÀÇ ¸íĪÀ̹ǷΠ´Ù¸¥ ¸íΰú Áߺ¹µÇ¾î¼´Â ¾ÈµÈ´Ù.
´Ù¸¥ ³×ÀÓ ½ºÆäÀ̽º¿Í ±¸ºÐµÇ´Â À̸§À» °¡Á®¾ß ÇÔÀº ¹°·ÐÀÌ°í º¯¼ö³ª ÇÔ¼ö¿Íµµ °°Àº À̸§À» ¾µ ¼ö ¾ø´Ù. ³×ÀÓ ½ºÆäÀ̽º°¡ ¸íĪ Ãæµ¹ ¹®Á¦¸¦ ÇØ°áÇϱâ
À§ÇÑ ÀåÄ¡Àε¥ ½º½º·ÎÀÇ À̸§ÀÌ Áߺ¹µÉ ¼ö ÀÖ´Ù´Â Àç±ÍÀûÀÎ ¹®Á¦°¡ ÀÖ´Â ¼ÀÀÌ´Ù. ±×·¯³ª ³×ÀÓ ½ºÆäÀ̽º´Â ÇÑ ÇÁ·Î±×·¥¿¡ ¸¹¾Æ¾ß ÇÑ µÎ °³¹Û¿¡ ¾øÀ¸¹Ç·Î
´Ù¸¥ ¸íĪº¸´Ù´Â Ãæµ¹ °¡´É¼ºÀÌ ÈξÀ ´õ ÀÛ°í ¼öÁ¤Çϱ⵵ ½¬¿î ÆíÀÌ´Ù.
¸¸¾à ¿ÜºÎ ¶óÀ̺귯¸®¿Í ³×ÀÓ ½ºÆäÀ̽º À̸§ÀÌ Áߺ¹µÈ´Ù¸é º¯¼ö³ª ŸÀÔÀÌ Áߺ¹µÇ´Â °Í°ú °°Àº °ï¶õÇÑ »óȲÀÌ µÉ °ÍÀÌ´Ù. ±×·¡¼ ³×ÀÓ ½ºÆäÀ̽ºÀÇ À̸§Àº °¡±ÞÀûÀÌ¸é ±æ°Ô ¾²°í ¶ÇÇÑ Áߺ¹µÇÁö ¾Ê´Â °íÀ¯ÇÑ À̸§À¸·Î ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ȸ»çÀÇ À̸§À̳ª ȨÆäÀÌÁö ÁÖ¼Ò, °³ÀÎ À̸ÞÀÏ ÁÖ¼Ò µîÀ» ÀÀ¿ëÇÏ¿© ³×ÀÓ ½ºÆäÀ̽º¸íÀ» ÀÛ¼ºÇϸé 99.9999% ¾ÈÀüÇÏ´Ù.
³×ÀÓ ½ºÆäÀ̽º´Â ¹Ýµå½Ã Àü¿ª ¿µ¿ª¿¡ ¼±¾ðÇØ¾ß ÇÑ´Ù. ÇÔ¼ö¾È¿¡ ¼±¾ðÇÒ ¼ö ¾ø´Ù´Â
¶æÀÌ¸ç ´ÙÀ½°ú °°Àº Áö¿ª ³×ÀÓ ½ºÆäÀ̽º´Â Çã°¡µÇÁö ¾Ê´Â´Ù.
void func()
{
namespace C {
int z;
}
....
ºÒ°¡´ÉÇÑ °ÍÀº ¾Æ´Ï°ÚÁö¸¸ ÀÌ·± ¹®¹ýÀ» Á¦°øÇÒ Çʿ䰡 ¾ø´Ù°í ÇØ¾ß ÇÒ °ÍÀÌ´Ù. Áö¿ªº¯¼ö´Â ÇÔ¼ö ³»ºÎ¿¡¸¸ ¾Ë·ÁÁö°í ±× »ý¸íµµ ÇÔ¼ö ³»ºÎ·Î ±¹ÇÑµÇ¸ç ¸¹¾Æ ºÁ¾ß ¸î ½Ê°³¸¦ ³ÑÁö ¾ÊÀ¸¹Ç·Î ÀÌ ÇÔ¼ö ³»¿¡¼¸¸ °íÀ¯ÇÑ À̸§À» °¡Áö¸é µÈ´Ù. °Ô´Ù°¡ ÇÔ¼ö Çϳª¸¦ µÑÀ̼ ¸¸µéÁö´Â ¾ÊÀ¸¹Ç·Î Ãæµ¹ÇØ ºÃÀÚ È¥ÀÚ °íÄ¡¸é µÈ´Ù. ±×·¡¼ Áö¿ªº¯¼ö´Â ³×ÀÓ ½ºÆäÀ̽º ¾È¿¡ ³ÖÀ» Çʿ䵵 ¾ø°í ±×·± ¹®¹ýµµ Çã¶ôµÇÁö ¾Ê´Â °ÍÀÌ´Ù. ¸¸¾à Áö¿ªº¯¼ö°£ÀÇ Ãæµ¹ÀÌ ³Ê¹« ½ÉÇØ ÇÔ¼ö¸¦ À¯ÁöÇϱ⠾î·Á¿ï Áö°æÀ̶ó¸é ÀÌ ÇÔ¼ö¸¦ Àß ¸ø ¸¸µç °ÍÀÌ´Ù. ÇÔ¼ö´Â ³Ê¹« Ä¿¼´Â ¾ÈµÇ¸ç ´õ ÀÛÀº ±â´É ´ÜÀ§·Î ºÐÇÒÇØ¾ß ÇÑ´Ù.
³×ÀÓ ½ºÆäÀ̽º°¡ Àü¿ª ¿µ¿ª¿¡¸¸ Á¸ÀçÇϱ⠶§¹®¿¡ ³×ÀÓ ½ºÆäÀ̽º ³»ºÎ¿¡ ¼±¾ðµÇ´Â ¸íεéÀº º»ÁúÀûÀ¸·Î Àü¿ªÀûÀÌ´Ù. ÁַΠŸÀÔÀ̳ª ÇÔ¼ö µî ÇÁ·ÎÁ§Æ® Àü¹Ý¿¡ °ÉÃÄ ÂüÁ¶µÇ¾î¾ß ÇÒ ¸íεéÀÌ ³×ÀÓ ½ºÆäÀ̽º¿¡ ¼±¾ðµÈ´Ù.
³×ÀÓ ½ºÆäÀ̽º³¢¸® Áßø °¡´ÉÇÏ´Ù. Áï, ³×ÀÓ ½ºÆäÀ̽º¾È¿¡ ¶Ç ´Ù¸¥ ³×ÀÓ ½ºÆäÀ̽º¸¦
¼±¾ðÇÒ ¼ö ÀÖ´Ù´Â ¾ê±âÀε¥ ÁßøÀÇ ´Ü°è¿¡ ´ëÇÑ Á¦ÇÑÀº ¾ø´Ù. ³×ÀÓ ½ºÆäÀ̽º´Â ¸íεéÀ» ³í¸®ÀûÀ¸·Î ±×·ìÈÇÏ´Â ¿ªÇÒÀ» Çϴµ¥ ±×·ìÀ» ³ª´©´Â ¼¼ºÎ ´Ü°è°¡
ÇÊ¿äÇÏ´Ù¸é ¿©·¯ ´Ü°è·Î ÁßøÇÒ ¼ö ÀÖ´Ù.
namespace Game {
namespace Graphic {
struct Screen { };
}
namespace Sound {
struct Sori { };
}
}
Game ³×ÀÓ ½ºÆäÀ̽º ¾È¿¡ Graphic, Sound ³×ÀÓ ½ºÆäÀ̽º°¡ ÀÖ°í °¢ Áßø ³×ÀÓ ½ºÆäÀ̽º¾È¿¡ ÇÔ¼ö, ŸÀÔ µî ÇÊ¿äÇÑ ¸íĪÀ» ¼±¾ðÇÑ ¿¹ÀÌ´Ù. ÀÌ »óÅ¿¡¼ ÁßøµÈ ¸íĪÀ» ÂüÁ¶ÇÏ·Á¸é :: ¿¬»êÀÚ¸¦ Áßø ȸ¼ö¸¸Å »ç¿ëÇÏ¿© Game::Graphic::Screen ½ÄÀ¸·Î ¾´´Ù. Áß°£ ±Ô¸ð Á¤µµÀÇ ÇÁ·ÎÁ§Æ®¿¡¼´Â ³×ÀÓ ½ºÆäÀ̽º¸¦ Áßø ½Ãų °æ¿ì°¡ º°·Î ¾øÀ¸¸ç ÃÊ°Å´ë ±Ô¸ðÀÇ ÇÁ·ÎÁ§Æ®¿¡¼³ª µå¹°°Ô »ç¿ëµÈ´Ù. ¼ö¹é¸íÀÌ ÇÑ ÇÁ·ÎÁ§Æ®¸¦ °³¹ßÇÑ´Ù¸é ÆÀº°·Î, °³Àκ°·Î ³×ÀÓ ½ºÆäÀ̽º¸¦ ¸¸µé¾î¾ß ÇÒ °ÍÀÌ´Ù.
³×ÀÓ ½ºÆäÀ̽º´Â Ç×»ó °³¹æµÇ¾î ÀÖ´Ù. ±×·¡¼ °°Àº ³×ÀÓ ½ºÆäÀ̽º¸¦ ¿©·¯ ¹ø
³ª´©¾î ¸íĪÀ» ¼±¾ðÇÒ ¼ö ÀÖ´Ù. ²À ÇѲ¨¹ø¿¡ ¸ô¾Æ¼ ³×ÀÓ ½ºÆäÀ̽º³»ÀÇ ¸ðµç ¸íĪÀ» Àϰý ¼±¾ðÇØ¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù.
namespace A {
double i;
}
namespace B {
int i;
}
namespace A {
char name[32];
}
³×ÀÓ ½ºÆäÀ̽º A°¡ µÎ ¹ø ¼±¾ðµÇ¾î Àִµ¥ µÎ ¹øÂ° ¼±¾ð¿¡ ÀÇÇØ »õ·Î¿î ³×ÀÓ ½ºÆäÀ̽º A°¡ ¸¸µé¾îÁö´Â °ÍÀÌ ¾Æ´Ï¶ó ±âÁ¸ A ¿µ¿ª¿¡ »õ·Î¿î ¸íĪÀÌ Ãß°¡µÈ´Ù. ±×·¡¼ º¯¼ö i¿Í nameÀº µÑ ´Ù ³×ÀÓ ½ºÆäÀ̽º AÀÇ ¼Ò¼ÓÀ¸·Î º´ÇյȴÙ. ³×ÀÓ ½ºÆäÀ̽º°¡ °³¹æµÇ¾î Àֱ⠶§¹®¿¡ ¿©·¯ ¸ðµâ¿¡¼ ÇÑ ³×ÀÓ ½ºÆäÀ̽º¿¡ ÇÊ¿äÇÑ ¸íĪÀ» ¾ðÁ¦µçÁö ¼±¾ðÇÒ ¼ö ÀÖÀ¸¸ç ¿©·¯ »ç¶÷ÀÌ °°Àº ³×ÀÓ ½ºÆäÀ̽º¸¦ ¾²´Â °Íµµ °¡´ÉÇÏ´Ù. ÀÌ·± °³¹æ¼ºÀÇ ¿¹´Â ¾Õ¼ Ŭ·¡½ºÀÇ ¾×¼¼½º ÁöÁ¤¿¡¼µµ º» ¹Ù ÀÖ´Ù.
³×ÀÓ ½ºÆäÀ̽º°¡ À̸§À» °¡ÁöÁö ¾ÊÀ» ¼ö ÀÖ´Ù. Ű¿öµå namespace ´ÙÀ½¿¡
{ } °ýÈ£¸¦ ¹Ù·Î ¾²°í °ýÈ£¾È¿¡ ¸íΏ¸ ¼±¾ðÇÏ¸é µÈ´Ù.
namespace {
int internal;
}
ÀÌ·¸°Ô µÇ¸é internalÀº »ç½Ç»ó ÀϹÝÀûÀÎ Àü¿ªº¯¼ö¿Í µ¿ÀÏÇÏ´Ù°í º¼ ¼ö ÀÖÀ¸¸ç ¼Ò¼ÓÀ» ¹àÈ÷ ÇÊ¿ä¾øÀÌ internalÀ̶ó´Â ¸íΏ¸À¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. ´Ù¸¸ ÀÌ ¼±¾ðÀÌ ÀÖ´Â ÆÄÀÏ ³»¿¡¼¸¸ »ç¿ë °¡´ÉÇÏ¸ç ¿ÜºÎ·Î ¾Ë·ÁÁöÁö ¾Ê´Â´Ù´Â Á¡¸¸ ´Ù¸£´Ù. 7-2-°¡ Àý¿¡¼ ³íÇÑ ¿ÜºÎ Á¤Àûº¯¼ö¿Í ¼º°ÝÀÌ µ¿ÀÏÇÏ´Ù°í ÇÒ ¼ö Àִµ¥ staticÀº CÀÇ ¹æ½ÄÀ̰í ÀÍ¸í ³×ÀÓ ½ºÆäÀ̽º´Â C++ÀÇ ¹æ½ÄÀÌ´Ù.
´ÜÀÏ ¸ðµâ ÇÁ·ÎÁ§Æ®¿¡¼´Â º° »ó°üÀÌ ¾øÁö¸¸ ´ÙÁß ¸ðµâ ÇÁ·ÎÁ§Æ®¿¡¼´Â ÇÔ¼öÀÇ
º»Ã¼¸¦ ¾îµð¿¡ ÀÛ¼ºÇÒ °ÍÀΰ¡ ÁÖÀÇÇØ¾ß ÇÑ´Ù. ¿©·¯ °³ÀÇ ¸ðµâ·Î ³ª´©¾îÁø ÇÁ·ÎÁ§Æ®¸¦ °³¹ßÇÒ ¶§´Â º¸Åë Çì´õ ÆÄÀϰú ±¸Çö ÆÄÀÏÀ» µû·Î ÀÛ¼ºÇÑ´Ù. ³×ÀÓ
½ºÆäÀ̽º¾È¿¡ ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¶§ Çì´õ ÆÄÀÏ¿¡ ¿øÇü¸¸ ¼±¾ðÇÏ°í ±¸Çö ÆÄÀÏ¿¡ ÇÔ¼öÀÇ º»Ã¼¸¦ ÀÛ¼ºÇÑ´Ù.
NsTest ÇÁ·ÎÁ§Æ®¿¡ NsTest ¸ÞÀÎ ¸ðµâ°ú ÀÌ ¸ðµâ¿¡ ¾î¶² ±â´ÉÀ» Á¦°øÇÏ´Â Util ¸ðµâÀÌ ÀÖ´Ù°í ÇÏÀÚ. Util ¸ðµâÀº ¸íĪ Ãæµ¹ ¹æÁö¸¦ À§ÇØ ³×ÀÓ ½ºÆäÀ̽º ¾È¿¡ ÇÔ¼ö¸¦ ÀÛ¼ºÇϰíÀÚ ÇÑ´Ù. À̶§ ÇÔ¼öÀÇ ¿øÇü ¼±¾ð°ú º»Ã¼ Á¤ÀÇ´Â ´ÙÀ½°ú °°ÀÌ ³ª´©¾îÁ®¾ß ÇÑ´Ù.
¿¹ Á¦ : NsTest |
Util.h¿¡´Â ³×ÀÓ ½ºÆäÀ̽º A¾È¿¡ func ÇÔ¼öÀÇ ¿øÇüÀÌ ±â·ÏµÇ¾î ÀÖ´Ù. ÀÌ ÇÔ¼öÀÇ º»Ã¼´Â Util.cpp¿¡ ÀÛ¼ºÇ쵂 º»Ã¼ Á¤ÀǺÎÀÇ ÇÔ¼ö¸í ¾Õ¿¡ ¼Ò¼Ó ³×ÀÓ ½ºÆäÀ̽ºÀÎ A::À» ¹Ýµå½Ã Àû¾î¾ß ÇÑ´Ù. ¾Æ´Ï¸é ³×ÀÓ ½ºÆäÀ̽ºÀÇ °³¹æ¼ºÀ» Ȱ¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ÇÒ ¼öµµ ÀÖ´Ù.
namespace A {
void func()
{
printf("I am func\n");
}
}
³×ÀÓ ½ºÆäÀ̽º°¡ ¹Ýº¹µÇ¸é º´ÇյǹǷΠÇÔ¼ö ¼±¾ð°ú º»Ã¼ Á¤Àǰ¡ ³×ÀÓ ½ºÆäÀ̽º A¿¡ ÇÕÃÄÁú °ÍÀÌ´Ù. ±¸Çö ÆÄÀÏÀ» µû·Î ¸¸µéÁö ¾Ê°í Çì´õ ÆÄÀÏ¿¡ ÇÔ¼öÀÇ º»Ã¼¸¦ ¹Ù·Î Á¤ÀÇÇÏ´Â °ÍÀº ¾ÈµÈ´Ù. Util.cpp¸¦ ÇÁ·ÎÁ§Æ®¿¡¼ »©°í ´ÙÀ½°ú °°ÀÌ Äڵ带 ¼öÁ¤ÇØ º¸ÀÚ.
ÀÏ´ÜÀº ÄÄÆÄÀÏµÇ°í ½ÇÇ൵ µÈ´Ù. ±×·¯³ª ¸¸¾à Á¦ 3ÀÇ ¸ðµâ¿¡¼ UtilÀÇ ÇÔ¼ö¸¦ ÇÊ¿ä·Î ÇÑ´Ù¸é Util.h¸¦ ÀÎŬ·çµå ÇÒ ¶§¸¶´Ù func ÇÔ¼öÀÇ º»Ã¼°¡ µû·Î »ý¼ºµÇ¹Ç·Î ÇÔ¼ö°¡ Áߺ¹ Á¤ÀǵǴ ¹®Á¦°¡ ÀÖ´Ù. ÀϹÝÀûÀ¸·Î ¼±¾ðÀº ¿©·¯ ¹ø ¹Ýº¹ÇÒ ¼ö ÀÖÁö¸¸ Á¤ÀÇ´Â ´Ü ÇÑ ¹ø¸¸ ÇØ¾ß ÇÑ´Ù.
ÀÌ Á¡Àº º¯¼ö¿¡ ´ëÇØ¼µµ ¸¶Âù°¡ÁöÀÌ´Ù. Çì´õ ÆÄÀÏÀÇ ³×ÀÓ ½ºÆäÀ̽º¾È¿¡ º¯¼ö¸¦ ¼±¾ðÇϸé ÀÌ Çì´õ ÆÄÀÏÀ» ÀÎŬ·çµåÇÏ´Â ¸ðµç ¸ðµâ¿¡ µ¿ÀÏÇÑ À̸§ÀÇ º¯¼ö°¡ Áߺ¹ »ý¼ºµÉ °ÍÀÌ´Ù. ¾Õ ºÎºÐ¿¡¼ °³³äÀûÀÎ ÀÌÇØÀÇ ÆíÀǸ¦ À§ÇØ ³×ÀÓ ½ºÆäÀ̽º¿¡ Æ÷ÇԵǴ ¸íĪÀ¸·Î º¯¼ö¸¦ »ç¿ëÇßÁö¸¸ ÀϹÝÀûÀ¸·Î ³×ÀÓ ½ºÆäÀ̽º¿¡ º¯¼ö³ª ÇÔ¼ö Á¤ÀǸ¦ Á÷Á¢ ÇÏ´Â °æ¿ì´Â °ÅÀÇ ¾ø´Ù. ÁַΠŬ·¡½º³ª ±¸Á¶Ã¼°°Àº ŸÀÔ ¼±¾ðÀÌ ³×ÀÓ ½ºÆäÀ̽º¿¡ ¹èÄ¡µÈ´Ù. C++¿¡¼´Â ÁַΠŬ·¡½º°£ÀÇ Ãæµ¹ÀÌ ¹®Á¦°¡ µÇ¸ç º¯¼ö³ª ÇÔ¼ö´Â Ŭ·¡½º¾È¿¡¼ Áö¿ªÀûÀ̹ǷΠ¹®Á¦°¡ µÇ´Â °æ¿ì°¡ µå¹°´Ù.