FreeBSD ÇÚµåºÏ : »õ·Î¿î Ä¿³Î ¼³Á¤ ¿É¼Ç Ãß°¡Çϱâ : ¾î·µç, Ä¿³Î ¿É¼ÇÀ̶õ ¹«¾ùÀԴϱî?
Previous: »õ·Î¿î Ä¿³Î ¼³Á¤ ¿É¼Ç Ãß°¡Çϱâ
Next: ÀÌÁ¦ ¹«¾ùÀ» ÇØ¾ß Çմϱî?

21.1. ¾î·µç, Ä¿³Î ¿É¼ÇÀ̶õ ¹«¾ùÀԴϱî?

Ä¿³Î ¿É¼ÇÀÇ »ç¿ëÀº ±âº»ÀûÀ¸·Î Ä¿³Î ¼³Á¤Àý¿¡¼­ ¼³¸íÇÏ¿´½À´Ï´Ù. ¶ÇÇÑ ÀüÅëÀûÀÎ ¹æ¹ý°ú »õ·Î¿î ¹æ¹ý¿¡ ´ëÇÑ ¼³¸íµµ ±×°÷¿¡ ÀÖ½À´Ï´Ù. ÃÖÁ¾ÀûÀÎ ¸ñÇ¥´Â ¸ðµç ¿É¼ÇÀ» »õ·Î¿î ¹æ¹ýÀ¸·Î ¹Ù²Ù´Âµ¥ ÀÖ½À´Ï´Ù. ±×·¯¸é ºôµå ÇÁ·Î¼¼½º´Â 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¿¡´Â Æ÷ÇԵ˴ϴÙ.


FreeBSD ÇÚµåºÏ : »õ·Î¿î Ä¿³Î ¼³Á¤ ¿É¼Ç Ãß°¡Çϱâ : ¾î·µç, Ä¿³Î ¿É¼ÇÀ̶õ ¹«¾ùÀԴϱî?
Previous: »õ·Î¿î Ä¿³Î ¼³Á¤ ¿É¼Ç Ãß°¡Çϱâ
Next: ÀÌÁ¦ ¹«¾ùÀ» ÇØ¾ß Çմϱî?