Ä¿³Î ¿É¼ÇÀÇ »ç¿ëÀº ±âº»ÀûÀ¸·Î
Ä¿³Î ¼³Á¤Àý¿¡¼
¼³¸íÇÏ¿´½À´Ï´Ù.
¶ÇÇÑ ÀüÅëÀûÀÎ ¹æ¹ý°ú »õ·Î¿î ¹æ¹ý¿¡ ´ëÇÑ ¼³¸íµµ ±×°÷¿¡ ÀÖ½À´Ï´Ù.
ÃÖÁ¾ÀûÀÎ ¸ñÇ¥´Â ¸ðµç ¿É¼ÇÀ» »õ·Î¿î ¹æ¹ýÀ¸·Î ¹Ù²Ù´Âµ¥ ÀÖ½À´Ï´Ù.
±×·¯¸é ºôµå ÇÁ·Î¼¼½º´Â config(8)
À» ½ÇÇàÇÑ ÈÄ Ä¿³Î ÄÄÆÄÀÏ
µð·ºÅ丮¿¡¼ ¿Ã¹Ù¸£°Ô make depend
¸¦ ÇÑ »ç¶÷À» À§ÇÏ¿©
¼öÁ¤µÈ ¿É¼ÇÀ» ÀÚµ¿ÀûÀ¸·Î ã°í,
±× ¿É¼Ç¿¡ °ü°èµÈ ÆÄÀϵ鸸 ´Ù½Ã ÄÄÆÄÀÏÇÕ´Ï´Ù.
¸Å config(8)
½ÇÇàÇÒ ¶§¸¶´Ù Áö³ ÄÄÆÄÀÏ µð·ºÅ丮¸¦ Áö¿ì´Â °ÍÀº
ÀÌ¹Ì Áö¿öÁ® ÀÖÀ¸¹Ç·Î ¶Ç Çѹø Áö¿ì´Â °ÍÀÔ´Ï´Ù.
±âº»ÀûÀ¸·Î Ä¿³Î ¿É¼ÇÀº Ä¿³Î ÄÄÆÄÀÏ °úÁ¤¿¡¼
C¾ð¾îÀÇ Àüó¸® °úÁ¤(preprocessing) Á¤ÀÇÀÇ ºÒ°úÇÕ´Ï´Ù.
ºôµå¸¦ ¼±ÅÃÀûÀÌ°Ô ÇÏ·Á¸é Ä¿³Î ¼Ò½ºÀÇ ÇØ´çÇÏ´Â ºÎºÐ
(¶Ç´Â Ä¿³ÎÀÇ .h
ÆÄÀÏ)ÀÌ ¹Ýµå½Ã ¿É¼ÇÀ̶ó°í
»ý°¢À» ÇÏ°í ÀÛ¼ºÇÏ¿©¾ß ÇÕ´Ï´Ù.
´Ù½Ã ¸»ÇÏ¸é ±âº»°ªÀº Ä¿³Î ¿É¼Ç¿¡ ÀÇÇؼ ¹«½ÃµÇ¾î¾ß ÇÕ´Ï´Ù.
ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ ¾¹´Ï´Ù.
#ifndef THIS_OPTION #define THIS_OPTION (some_default_option) #endif /* THIS_OPTION */
ÀÌ¿Í °°Àº ¹æ¹ýÀ¸·Î, °ü¸®ÀÚ´Â ¼³Á¤ ÆÄÀÏ(config file)¿¡ »õ·Î¿î ¿É¼Ç °ªÀ» ÀûÀ½À¸·Î½á ±âº»°ªÀ» ¹«½ÃÇÏ°í »õ·Î¿î °ªÀ» Àû¿ë ½Ãų¼ö ÀÖ½À´Ï´Ù. ºÐ¸íÈ÷ »õ·Î¿î °ªÀº, Àüó¸® °úÁ¤¿¡¼ ¼Ò½º ÄÚµå·Î ´ëüµÇ¹Ç·Î, ¹Ýµå½Ã ±âº» °ªÀÌ »ç¿ëµÈ ¾î¶°ÇÑ ±¸¹®¿¡¼µµ À¯È¿ÇÑ C¾ð¾î Ç¥ÇöÀ̾î¾ß ÇÕ´Ï´Ù.
°ªÀÌ ¾ø´Â ¿É¼ÇÀ» »ç¿ëÇÏ¿© ƯÁ¤ÇÑ Äڵ带 Æ÷ÇÔ½ÃÅ°°Å³ª Æ÷ÇÔ½ÃÅ°Áö ¾Ê°Ô Çϱâ À§Çؼ´Â ´ÙÀ½°ú ÇÏ¸é µË´Ï´Ù.
#ifdef THAT_OPTION [your code here] #endif
´Ü¼øÈ÷ ¼³Á¤ ÆÄÀÏ¿¡¼ °ªÀÌ Àְųª ¾ø°Å³ª »ó°ü¾øÀÌ
THAT_OPTION
À» ½á ÁÜÀ¸·Î½á
ÇØ´çÇÏ´Â ºÎºÐÀÌ ÀÛµ¿ ÇÒ °ÍÀÔ´Ï´Ù.
C¾ð¾î¿¡ Àͼ÷ÇÑ ºÐµéÀº Àû¾îµµ ÇϳªÀÇ
#ifdef
°¡ ÂüÁ¶ÇÏ´Â ¸ðµç °ÍÀº
``Ä¿³Î ¼³Á¤''À̶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù...
ÇÏ¿©°£ ¼³Á¤ ÆÄÀÏ¿¡
options notyet,notdef
¶ó°í ½á ³õ°í, Ä¿³Î ÄÄÆÄÀÏÀÌ ¿Ö ½ÇÆÐÇß´ÂÁö ÀǾÆÇØ ÇϽǺÐÀº ¾øÀ¸½Ã°ÚÁÒ. :-)
ºÐ¸íÈ÷ ÀÓÀÇÀûÀÎ ¿É¼Ç À̸§Àº Ä¿³Î ¼Ò½º Æ®¸®¿¡¼
»ç¿ë¹ýÀ» ã±â Èûµé°Ô ÇÕ´Ï´Ù.
°¢°¢ÀÇ ¼³Á¤ÀÌ Ä¿³Î ÄÄÆÄÀÏ µð·ºÅ丮 ¾È¿¡
opt_foo.h
·Î ¾à¼ÓµÈ À̸§À¸·Î ºÐ¸®µÈ
¾î´À .h
¿¡ ¼ÓÇÏ´À³Ä´Â »õ·Î¿î ¼³Á¤ ¹æ¹ý¿¡¼ÀÇ ¿ø¸®ÀÔ´Ï´Ù.
ÀÌ¿Í °°Àº ¹æ¹ýÀº ÀϹÝÀûÀÎ MakefileÀÇ ÀÇÁ¸¼ºÀ» Àû¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ¸ç,
¼³Á¤ÀÌ ¹Ù²î¾úÀ» °æ¿ì make
°¡ ´Ù½Ã ÄÄÆÄÀÏ ÇØ ÁÖ¾î¾ß ÇÒ °ÍÀ»
°áÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù.
ÀÌÀüÀÇ ¼³Á¤ ¹æ½ÄÀº ¼ö¸íÀÌ ÂªÀ» °Å¶ó ¿¹»óµÇ´Â
±¹¼ÒÀû ¿É¼ÇÀ̳ª ½ÇÇèÀûÀÎ ¿É¼Ç¿¡¼´Â
¿©ÀüÈ÷ ÇÑ°¡Áö ÀåÁ¡Àº ÀÖ½À´Ï´Ù.
±×·¯³ª Ä¿³Î ¼Ò½º¿¡ #ifdef
¸¦ ÷°¡Çϱâ´Â ½¬¿ì¹Ç·Î
À§ÀÇ ¿É¼ÇÀº ÀÌ¹Ì ¼³Á¤ ¿É¼ÇÀÌ µÇ¾îÀÖ½À´Ï´Ù.
ÀÌ¿Í °°Àº °æ¿ì, À§ÀÇ ¿É¼Ç °°Àº °ÍÀ»
»ç¿ëÇÏ´Â °ü¸®ÀÚ´Â ±× ¿É¼Ç¿¡¼ ¿¹»óµÇ´Â °á°ú¿¡
´ëÇؼ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù
(±×¸®°í ¾Æ¸¶µµ Á÷Á¢ °Á¦ÀûÀ¸·Î Ä¿³ÎÀÇ ÀϺκÐÀ»
´Ù½Ã ÄÄÆÄÀÏÇÏ¿©¾ß °ÚÁö¿ä).
Áö¿øµÇ´Â ¸ðµç ¿É¼ÇÀ» º¯°æ Çß´Ù¸é,
config(8)
´Â ¼³Á¤ ÆÄÀÏ¿¡¼ Áö¿øµÇÁö ¾Ê´Â ¿É¼ÇÀ»
º¼ ¶§¸¶´Ù °æ°íÇÒ °ÍÀÔ´Ï´Ù.
±×·¯³ª Áö¿øµÇÁö ¾Ê´Â ¿É¼Çµµ Ä¿³ÎÀÇ Makefile¿¡´Â Æ÷ÇԵ˴ϴÙ.