¸®´ª½º Ä¿³Î ÄÚµù ½ºÅ¸ÀÏ
2006-07-13 ½Å¿µÁø
ÀÌ ¹®¼´Â http://www.chris-lott.org/resources/cstyle/LinuxKernelCodingStyle.txt À» ¹ø¿ªÇÑ °Í ÀÔ´Ï´Ù. ¸®´©½º Åä¹ßÁî°¡ ÀÛ¼ºÇÑ ¸®´ª½º Ä¿³Î ÄÚµù ½ºÅ¸ÀÏÀ̶ó´Â ¹®¼ÀÔ´Ï´Ù. C¾ð¾î ÄÚµù ½ºÅ¸ÀÏ¿¡ °üÇÑ ±×ÀÇ ÅëÂû·ÂÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
¸®´ª½º Ä¿³Î ÄÚµù ½ºÅ¸ÀÏ
ÀÌ ¹®¼´Â ¸®´ª½º Ä¿³Î¿¡¼ ÁÖ·Î »ç¿ëµÇ´Â ÄÚµù ½ºÅ¸ÀÏÀ» ¼³¸íÇÑ´Ù. ÄÚµù ½ºÅ¸ÀÏÀº ¸Å¿ì °³ÀÎÀûÀ̹ǷΠ³ªÀÇ °ßÇØ¸¦ ´Ù¸¥ »ç¶÷¿¡°Ô °¿äÇÏ°í ½ÍÁø ¾Ê´Ù. ÇÏÁö¸¸ À̰ÍÀº ³»°¡ ¼ºÃëÇϱâ À§Çؼ À¯ÁöÇØ¾ß¸¸ ÇÏ´Â °ÍµéÀÌ¸ç ³ª´Â ´Ù¸¥ ¾î¶² °Íº¸´Ùµµ ÀÌ ½ºÅ¸ÀÏÀ» ÁÁ¾ÆÇÑ´Ù. ÃÖ¼ÒÇÑ ¿©±â¼ ÁöÀûÇÏ´Â ºÎºÐ¿¡ ´ëÇØ¼ Çѹø¾¿ »ý°¢ÇØ º¸±æ ¹Ù¶õ´Ù.
¿ì¼±, ³ GNU ÄÚµù Ç¥ÁØ ¹®¼¸¦ ÇÑ ºÎ Ãâ·ÂÇϱ⸦ Á¦¾ÈÇÏ°í ½Í´Ù. ±×¸®°ï ÀÐÁö ¾Ê°í Å¿ö¹ö¸®ÀÚ. ±×°Ç ¸Å¿ì »ó¡ÀûÀÎ Á¦½ºÃİ¡ µÉ °ÍÀÌ´Ù.
ÇÏ¿©Æ°, Çѹø ½ÃÀÛÇØ º¸µµ·Ï ÇÏÀÚ.
éÅÍ 1: Àε§Æ®
ÅÇÀº 8 ±ÛÀÚ, ¸¶Âù°¡Áö·Î Àε§Æ®µµ 8±ÛÀÚ·Î ÇÑ´Ù. Àε§Æ®¸¦ 4(¶Ç´Â 2)±ÛÀÚÀÇ ±íÀÌ·Î ¹Ù²Ù·Á´Â ÀÌ´ÜÀÚµéÀÇ ¿òÁ÷ÀÓÀÌ ÀÖ´Ù. ±×°ÍÀº ÆÄÀÌ(PI)°ªÀ» 3À¸·Î ¼±¾ðÇÏ´Â °Í°ú ¸¶Âù°¡ÁöÀÇ ÇൿÀÌ´Ù.
±Ù°Å: Àε§Æ® µÚ¿¡ ¼û¾îÀÖ´Â ÀüüÀûÀÎ ¾ÆÀ̵ð¾î´Â ºí·Ï ÄÁÆ®·ÑÀÌ ¾îµð¼ ½ÃÀÛÇÏ°í ³¡³ª´ÂÁö ¸íÈ®ÇÏ°Ô ¼±¾ðÇÏ´Â °ÍÀÌ´Ù. ƯÈ÷ ´ç½ÅÀÌ ¸ð´ÏÅ͸¦ 20½Ã°£ µ¿¾È ¶Õ¾îÁ®¶ó ÃÄ´ÙºÁ¾ß ÇÏ´Â »óȲ¿¡¼´Â ±× Á¡À» Á» ´õ ½±°Ô ¹ß°ßÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ³ÐÀº Àε§Æ®¸¦ »ç¿ëÇß´Ù¸é ±×°ÍÀÌ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ½±°Ô º¼ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
Áö±Ý, ¸î¸î »ç¶÷µéÀº 8±ÛÀÚ Àε§Æ®¸¦ °¡Áö°í ÀÖ´Â °ÍÀº Äڵ带 ¿À¸¥ÂÊÀ¸·Î ³Ê¹« ¸Ö¸® À̵¿½Ã۸ç, ±×°ÍÀº 80 ±ÛÀÚ Å͹̳Π½ºÅ©¸°¿¡¼ ´õ¿í Àбâ Èûµé´Ù°í ÁÖÀåÇÑ´Ù. °Å±â¿¡ ´ëÇÑ ´äº¯Àº 3 ·¹º§ ÀÌ»óÀÇ Àε§Æ®°¡ Çʿ䰡 ¾ø´Ù´Â °ÍÀÌ´Ù. ¸¸¾à ±×µéÀÌ 3·¹º§ ÀÌ»óÀÇ Àε§Æ®¸¦ ÇÊ¿ä·Î ÇÑ´Ù¸é ±×µéÀÇ ÄÚµå´Â ¾î·µç ²¿ÀÌ´Â °ÍÀº ¸¶Âù°¡ÁöÀ̱⠶§¹®¿¡ ¹Ýµå½Ã ÇÁ·Î±×·¥À» °íÃÄ¾ß ÇÒ °ÍÀÌ´Ù.
ª°Ô ¸»Çؼ, 8±ÛÀÚ Àε§Æ®´Â Äڵ带 Àб⠽±°Ô ¸¸µé¾î ÁÖ¸ç ³Ê¹« ±í°Ô ÇÔ¼ö¸¦ Áßø½ÃŰ´Â °ÍÀ» °æ°íÇØÁÖ´Â Ãß°¡ÀûÀÎ ÀÌÁ¡ÀÌ ÀÖ´Ù. ±× °æ°í¸¦ ¹«½ÃÇØ¼´Â ¾È µÈ´Ù.
éÅÍ 2: °ýÈ£ À§Ä¡
C ½ºÅ¸Àϰú °ü·ÃµÅ¼ Ç×»ó Æ¢¾î³ª¿À´Â ´Ù¸¥ À̽´´Â °ýÈ£¸¦ ¾îµð´Ù À§Ä¡½ÃŰ³Ä ÇÏ´Â °ÍÀÌ´Ù. Àε§Æ® »çÀÌÁî¿Í ´Ù¸£°Ô, ´Ù¸¥ °ÍÀ» ¹èÁ¦Çϰí ÇÑ °¡Áö ¹èÄ¡ Àü·«À» ¼±ÅÃÇÏ´Â °ÍÀº ¾ÆÁÖ Á¶±ÝÀÇ ±â¼úÀûÀÎ ÀÌÀ¯¹Û¿¡ ¾ø´Ù. ±×·¯³ª ÁÁ¾Æ¶ó ÇÏ´Â ¹æ¹ýÀº ¿±â °ýÈ£´Â ¶óÀÎ ³¡¿¡ À§Ä¡½Ã۰í, ´Ý±â °ýÈ£´Â ¶óÀÎÀÇ Ã³À½¿¡ À§Ä¡½ÃŰ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ¹æ¹ýÀº Ä¿´×Çå°ú ¸®Ä¡¿Í °°Àº ¼±ÁöÀÚµéÀÌ ¿ì¸®¿¡°Ô º¸¿©ÁØ °ÍÀ̱⵵ ÇÏ´Ù. ¾Æ·¡¿Í °°ÀÌ µÉ °Í ÀÌ´Ù.
if (x is true) {
we do y
}
±×·¯³ª, °Å±â¿¡´Â ÇÔ¼ö¶ó´Â ÇѰ¡Áö Ưº°ÇÑ °æ¿ì°¡ ÀÖ´Ù. : ±×°ÍµéÀº ´ÙÀ½°ú °°ÀÌ ¿±â °ýÈ£¸¦ ´ÙÀ½ ÁÙÀÇ ½ÃÀÛ¿¡ À§Ä¡½ÃŲ´Ù.
int function(int x)
{
body of function
}
Àü¼¼°è¿¡ ºÐÆ÷ÇÑ ÀÌ´ÜÀÚµéÀº À̰ÍÀº ¸ð¼øÀÌ´Ù... À½ ºÒ¿ÏÀüÇÏ´Ù...,¶ó´Â ÁÖÀåÀ» ÆîÄ£´Ù. ±×·¯³ª ¹Ù¸£°Ô »ý°¢ÇÏ´Â ¸ðµç »ç¶÷Àº (a) K&RÀº ¿Ã¹Ù¸£¸ç (b) K&Rµµ ¿Ç´Ù´Â °ÍÀ» ¾Ë°í ÀÖ´Ù. °Ô´Ù°¡, ÇÔ¼ö´Â ¾î·µç Ưº°ÇÏ´Ù (C¿¡¼ ÇÔ¼ö´Â ÁßøÀÌ ºÒ°¡´ÉÇÏ´Ù).
´Ý±â °ýÈ£´Â ±×°Í ÀÚü¸¸ ÀÖ´Â ÁÙ·Î ºñ¾î ÀÖ¾î¾ß ÇÑ´Ù´Â Á¡À» ¾Ë¾ÆµÖ¶ó. ¹°·Ð ¿¬¼ÓÀûÀ¸·Î °°Àº ±¸¹®ÀÌ µû¶ó¿À´Â °æ¿ì´Â Á¦¿ÜÇÑ´Ù. ¿¹¸¦ µé¸é do ±¸¹®¿¡ Æ÷ÇÔµÈ "while" À̳ª if ±¸¹®¿¡ Æ÷ÇÔµÈ "else"°°Àº °ÍµéÀÌ´Ù. ±×°ÍµéÀº ´ÙÀ½°ú °°ÀÌ ¾´´Ù.
do {
body of do-loop
} while (condition);
¶Ç´Â
if (x == y) {
..
} else if (x > y) {
...
} else {
....
}
±Ù°Å: K&R.
¶ÇÇÑ, ÀÌ·¸°Ô °ýÈ£¸¦ ¹èÄ¡½ÃŰ´Â °ÍÀÌ °¡µ¶¼º¿¡ ´ëÇÑ ¾î¶°ÇÑ ¼ÕÇØµµ ¾øÀÌ ºñ¾îÀÖ´Â(¶Ç´Â °ÅÀÇ ºó) ¶óÀÎÀÇ ¼ö¸¦ ÃÖ¼ÒÈ ÇÑ´Ù´Â °ÍÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ±×·¸°Ô ÇÔÀ¸·Î½á, ³·Àº ÇØ»óµµÀÇ Å͹̳ο¡¼µµ(80x25¶óÀÎ Å͹̳ÎÀÌ ¿©±â ÀÖ´Ù°í »ý°¢ÇغÁ¶ó), ÄÚ¸àÆ®¸¦ ´Þ ¼ö ÀÖ´Â ºó ¶óÀεéÀ» ´õ ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.
éÅÍ 3: ³×À̹Ö
C´Â ¾ö°ÝÇÑ ¾ð¾î¸ç, ³×Àֿ̹¡µµ ±×·¯ÇÑ °ÍÀÌ Àû¿ëµÈ´Ù. Modula-2³ª Pascal ÇÁ·Î±×·¡¸Óµé°ú ´Þ¸®, C ÇÁ·Î±×·¡¸ÓµéÀº ThisVariablesATemporaryCounter¿Í °°Àº ±Í¿©¿î À̸§À» »ç¿ëÇÏÁö ¾Ê´Â´Ù. C ÇÁ·Î±×·¡¸Ó´Â ¾Æ¸¶µµ ±× º¯¼ö À̸§À» "tmp"·Î ÁöÀ» °ÍÀÌ´Ù. ±×·¯´Â ÆíÀÌ ÈξÀ ¾²±â ½±°í, ±×´ÙÁö ÀÌÇØÇÏ±â ¾î·ÆÁöµµ ¾Ê±â ¶§¹®ÀÌ´Ù.
±×·¯³ª, ´ë¼Ò¹®ÀÚ°¡ ¼¯ÀÎ À̸§ÀÌ ´«»ìÀ» ÂîǪ¸®°Ô ÇÏÁö¸¸ , Àü¿ª º¯¼ö´Â ¹Ýµå½Ã ¼³¸íÀûÀÎ À̸§À¸·Î Áö¾î¾ß ÇÑ´Ù. Àü¿ª ÇÔ¼ö¸¦ "foo"¶ó°í ºÎ¸£´Â °ÍÀº À߸øµÈ °ÍÀÌ´Ù.
Àü¿ª º¯¼ö´Â(½ÇÁ¦·Î ±×°ÍµéÀ» ÇÊ¿äÇÒ ¶§¸¸ »ç¿ëÇØ¾ß ÇÑ´Ù) Àü¿ª ÇÔ¼ö°¡ ±×·¨µíÀÌ ¼³¸íÀûÀÎ À̸§À» °¡Áú Çʿ䰡 ÀÖ´Ù. Ȱ¼ºÈµÈ »ç¿ëÀÚ ¼ö¸¦ ¼¼´Â ÇÔ¼ö°¡ ÀÖ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ¾Æ¸¶µµ "count_active_users()"³»Áö´Â ±×¿Í ºñ½ÁÇÑ À̸§À» ÁöÀ» °ÍÀÌ´Ù. ±×°É "cntusr()"À̶ó°í ºÒ·¯¼´Â ¾È µÈ´Ù.
ÇÔ¼ö ŸÀÔÀ» À̸§¿¡ ÀÎÄÚµù ÇÏ´Â °ÍÀº(¼ÒÀ§ Çë°¡¸®¾ð Ç¥±â¹ýÀ̶ó ºÒ¸°´Ù) ¿ÏÀüÈ÷ ¾µ¸ð ¾ø´Â ÁþÀÌ´Ù. - ÄÄÆÄÀÏ·¯´Â ¾î·µç ŸÀÔÀ» ¾Ë°í ÀÖÀ¸¸ç ±×°ÍµéÀ» üũÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ±×°ÍÀº ´ÜÁö ÇÁ·Î±×·¡¸Ó¸¦ È¥¶õ ½Ã۱⸸ ÇÑ´Ù. ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®°¡ ¹ö±× Åõ¼ºÀÌÀÇ ÇÁ·Î±×·¥À» ¸¸µå´Â °Í¿¡ ´ëÇÑ Àǹ®ÀÇ ¿©Áö°¡ ¾ø´Â °ÍÀÌ´Ù(¿ªÁÖ: MSÀÇ ¼ö¼® °³¹ßÀÚ Âû½º ½Ã¸ð´Ï°¡ Çë°¡¸®¾ð Ç¥±â¹ýÀ» â¾ÈÇß´Ù).
Áö¿ª º¯¼ö À̸§Àº ¹Ýµå½Ã ª¾Æ¾ß ÇÑ´Ù´Â °ÍÀÌ Æ÷ÀÎÆ®´Ù. Á¤¼ö ·çÇÁ Ä«¿îÅÍ¿¡ »ç¿ëµÇ´Â º¯¼ö´Â "i"·Î ºÒ¸®´Â °ÍÀ¸·Î Á·ÇÏ´Ù. °Å±â¿¡ ¿ÀÇØÀÇ ¼ÒÁö°¡ ¾ø´Â ÇÑ, ±×°ÍÀ» "loop_counter" ¶ó°í ºÎ¸£´Â °ÍÀº »ý»êÀûÀÌÁö ¾Ê´Ù. ¸¶Âù°¡Áö·Î "tmp"´Â Àӽà °ªÀ» °¡Áö°í Àִµ¥ »ç¿ëÇÏ´Â ¾î¶² ŸÀÔÀÇ º¯¼öµµ µÉ ¼ö ÀÖ´Ù.
¸¸¾à ´ç½Å Áö¿ª º¯¼ö À̸§À» ¼¯¾î ¾µ °Í °°¾Æ¼ °ÆÁ¤µÈ´Ù¸é, ´ç½ÅÀº ´Ù¸¥ ¹®Á¦µµ °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. ±×°ÍÀº ÇÔ¼ö-¼ºÀå-È£¸£¸ó-ºÒ±ÕÇü ½Åµå·ÒÀ̶ó°í ºÒ¸®´Â °ÍÀÌ´Ù. ´ÙÀ½ éÅ͸¦ º¸¸é ¾Ë°Ô µÉ °ÍÀÌ´Ù.
éÅÍ 4: ÇÔ¼ö
ÇÔ¼ö´Â ÇѰ¡Áö Àϸ¸ ÇÏ´Â °£´ÜÇÏ°í ±ÔÄ¢ÀûÀÎ °ÍÀ̾î¾ß ÇÑ´Ù. ±×°ÍµéÀº ½ºÅ©¸° Å©±âÀÇ µÎ ¹è Á¤µµÀÇ ÅØ½ºÆ®¿¡ µé¾î°¡¾ß Çϸç(¿ì¸® ¸ðµÎ°¡ ¾Ë°í ÀÖµíÀÌ ISO/ANSI ½ºÅ©¸° »çÀÌÁî´Â 80x24´Ù.) ÇѰ¡Áö ÀÏÀ» ó¸®ÇÏ¸ç ±×°ÍÀ» Àß ÇØ¾ß ÇÑ´Ù.
ÇÔ¼öÀÇ ÃÖ´ë ±æÀÌ´Â ÇØ´ç ÇÔ¼öÀÇ Àε§Æ® ·¹º§°ú º¹Àâµµ¿¡ ¿ªÀ¸·Î ºñ·ÊÇÑ´Ù. µû¶ó¼, ÄÁ¼ÁÀûÀ¸·Î °£´ÜÇÑ ÇÔ¼öµé¿¡ ´ëÇØ¼´Â ±æ°Ô ÀÛ¼ºÇÏ´Â °Íµµ ±¦Âú´Ù. ÁÖ·Î ±×·± °ÍµéÀº ¸¹Àº ¼öÀÇ ÀÛÀº °ÍµéÀ» ¸¹Àº ´Ù¸¥ °æ¿ì¿¡ ¼öÇàÇØ¾ß ÇÏ´Â ¶§¿¡ »ç¿ëÇÏ´Â, ´ÜÁö ±æ±â¸¸ ÇÑ(±×·¯³ª °£´ÜÇÑ) case ±¸¹®À¸·Î ±¸¼ºµÈ °ÍµéÀÌ´Ù.
±×·¯³ª, º¹ÀâÇÑ ÇÔ¼ö¶ó¼ °í»ß¸®µé Á¶Â÷µµ ±× ÇÔ¼ö°¡ ¹«¾ùÀ» ÇÏ´Â °ÍÀÎÁö Á¤È®ÇÏ°Ô ÀÌÇØÇÏÁö ¸øÇÑ´Ù°í »ý°¢ÇÑ´Ù¸é, ¹Ýµå½Ã ¼¼¹ÐÇÏ°Ô µÎ ÆäÀÌÁö ºÐ·®ÀÇ Á¦ÇÑÀ» Áöų Çʿ䰡 ÀÖ´Ù. ±×·² ¶§¿¡´Â ´ë½Å ¼³¸íÀûÀÎ À̸§À» Áö´Ñ ÇïÆÛ ÇÔ¼öµéÀ» »ç¿ëÇÏ¸é µÈ´Ù (¸¸¾à ±×°ÍÀÌ ¼º´É°ú ¸Å¿ì ¹ÐÁ¢ÇÑ ¿¬°üÀÌ ÀÖ´Ù¸é inlineÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ±×°ÍÀÌ ³×°¡ ÇÒ ¼ö ÀÖ´Â Çൿ Áß¿¡ °¡Àå ±¦ÂúÀº °ÍÀÌ´Ù).
ÇÔ¼öÀÇ ´Ù¸¥ ÃøÁ¤ ±âÁØÀÇ Çϳª´Â Áö¿ª º¯¼öÀÇ °³¼öÀÌ´Ù. ±×°ÍµéÀº 5-10°³¸¦ ³ÑÁö ¾Ê¾Æ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¹º°¡ À߸øµÇ°í ÀÖ´Â °ÍÀÌ´Ù. ÇÔ¼ö¿¡ ´ëÇØ¼ ´Ù½Ã »ý°¢ÇØ º¸°í, ±×¸®°í ±×°ÍÀ» ´õ ÀÛÀº Á¶°¢À¸·Î ºÐ¸®Çϵµ·Ï ÇØ¾ß ÇÑ´Ù. »ç¶÷ÀÇ ³ú°¡ ÀϹÝÀûÀ¸·Î ½±°Ô ±â¾ïÇÒ ¼ö ÀÖ´Â °ÍÀº 7°¡Áö ´Ù¸¥ °Íµé¿¡ ºÒ°úÇÏ´Ù. ±×°Íº¸´Ù ¸¹´Ù¸é È¥¶õÀ» ¾ß±â½Ãų °ÍÀÌ´Ù. ³×°¡ ¶È¶ÈÇÏ´Ù°í »ý°¢ÇÑ´Ù¸é Áö±ÝÀ¸·ÎºÎÅÍ 2ÁÖÀü¿¡ ÀÛ¾÷ÇÑ °ÍÀÌ ¹«¾ùÀÎÁö ÀÌÇØÇØ º¸±æ ¹Ù¶õ´Ù.
éÅÍ 5: ÄÚ¸àÆ®
ÄÚ¸àÆ®´Â ÁÁ´Ù. ±×·¯³ª °úµµÇÑ ÄÚ¸àÆ®¿¡´Â ¶ÇÇÑ À§ÇèÀÌ µµ»ç¸®°í ÀÖ´Ù. Àý´ë·Î ¾î¶»°Ô Äڵ尡 µ¿ÀÛÇÏ´ÂÁö¸¦ ÄÚ¸àÆ®·Î ¼³¸íÇÏ·Á°í ½ÃµµÇÏÁö ¸¶¶ó. Äڵ带 ±×°ÍÀÌ ÇÏ´Â ÀÏÀÌ ºÐ¸íÇØ Áöµµ·Ï ¾²´Â °ÍÀÌ ÁÁ´Ù, ±×¸®°í À߸ø ¾²¿©Áø Äڵ带 ¼³¸íÇÏ´Â °ÍÀº ½Ã°£ ³¶ºñ´Ù.
ÀϹÝÀûÀ¸·Î, ÄÚ¸àÆ®´Â Äڵ尡 ¹«¾ùÀ» ÇÏ´ÂÁö¸¦ ¸»ÇØ¾ß ÇÑ´Ù. ¾î¶»°Ô ÇÏ´ÂÁö¸¦ ¸»ÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. ¶ÇÇÑ ÄÚ¸àÆ®¸¦ ÇÔ¼ö ³»ºÎ¿¡ µÎ´Â °ÍÀ» ÇÇÇØ¾ß ÇÑ´Ù. ¸¸¾à ÇÔ¼ö°¡ ³Ê¹« º¹ÀâÇØ¼ ±×°ÍÀÇ ÀϺκÐÀ» ºÐ¸®Çؼ ÄÚ¸àÆ®·Î ³²°Ü¾ß ÇÒ Çʿ䰡 ÀÖ´Ù¸é, éÅÍ 4·Î µ¹¾Æ°¡ º¸±æ ¹Ù¶õ´Ù. Ưº°ÇÑ ²Ç¼ö¿¡(ÀÌ»óÇÑ °Í) °æ°í³ª ¾Ë¸²À» ÇÏ´Â ÀÛÀº ÄÚ¸àÆ®¸¦ ¸¸µé ¼ö´Â ÀÖ´Ù. ±×·¯³ª °úµµÇÑ °ÍÀº ÇÇÇØ¾ß ÇÑ´Ù. ´ë½Å, ÄÚ¸àÆ®¸¦ ÇÔ¼ö ¾Õ¿¡ µÎµµ·Ï ÇÑ´Ù. »ç¶÷µé¿¡°Ô ±×°ÍÀÌ ¹«¾ùÀ» ÇÏ´ÂÁö, ¿Ö ±×°ÍÀ» ÇÏ´ÂÁö ¸»ÇØÁÖ´Â °ÍÀÌ´Ù.
éÅÍ 6: ¸ðµç°É ¸ÁÃÄ ¹ö·ÈÀ» ¶§
±¦Âú´Ù. ¿ì¸° ¸ðµç °ÍÀ» ÇÒ ¼ö ÀÖ´Ù. ¿À·¡µÈ À¯´Ð½º »ç¿ëÀÚµéÀº "GNU emacs"°¡ C ¼Ò½º¸¦ ÀÚµ¿À¸·Î Æ÷¸ËÆÃÇÒ ¼ö ÀÖ´Ù°í ¸»ÇÑ´Ù. ¸Â´Â ¸»ÀÌ´Ù. emacs´Â ±×°É ÇØÁØ´Ù. ±×·¯³ª µðÆúÆ® ¿É¼ÇÀ» »ç¿ëÇÑ´Ù¸é ¿ì¸®°¡ ¿øÇß´ø °ÍÀ» ¾òÀ» ¼ö ¾øÀ» °ÍÀÌ´Ù (»ç½Ç, ±×°ÍÀº ·£´ý ŸÀÌÇÎ º¸´Ù ¸øÇÏ´Ù - ¹«ÇÑ´ëÀÇ ¿ø¼þÀ̰¡ GNU emacs¿¡¼ ŸÀÌÇÎ ÇØ ºÃÀÚ ÁÁÀº ÇÁ·Î±×·¥ÀÌ ¸¸µé¾îÁú ¸® ¾ø´Ù).
ÀÌÂë µÇ¸é ¾Æ¸¶ GNU emacs¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù´Â »ç¶÷µµ ÀÖÀ» °ÍÀÌ°í ½ºÄ³³Ê ¿É¼ÇÀ» º¯°æÇÏ·Á´Â »ç¶÷µµ ÀÖÀ» °ÍÀÌ´Ù. ÈÄÀÚ ÂÊÀ» ¼±ÅÃÇß´Ù¸é, .emacs ÆÄÀÏ¿¡ ¾Æ·¡¿Í °°Àº ÁÙÀ» Ãß°¡ÇÏ¸é µÈ´Ù.
(defun linux-c-mode () "C mode with adjusted defaults for use with the Linux kernel." (interactive) (c-mode) (c-set-style "K&R") (setq c-basic-offset 8))
À̰ÍÀº M-x linux-c-mode Ä¿¸Çµå¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ´Ù. ÆÄÀÏÀÇ Ã³À½ ½ÃÀÛ µÎ ÁÙ¿¡ -*-linux-c-*- ÀÌ ¹®ÀåÀ» ³õ°Ô µÇ¸é ÀÌ ¸ðµå´Â ÀÚµ¿ÀûÀ¸·Î ½ÇÇàµÈ´Ù. À̰ÍÀ» Ãß°¡ÇÏ°í ½ÍÀ» °ÍÀÌ´Ù.
(setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$" . linux-c-mode)
auto-mode-alist))
À§ÀÇ ³»¿ëÀ» .emacs ÆÄÀÏ¿¡ Ãß°¡Çϸé, /usr/src/lunux ¾Æ·¡ÀÇ ¼Ò½º¸¦ ÆíÁýÇÒ ¶§ ÀÚµ¿À¸·Î linux-c-mode°¡ ÄÑÁö°Ô µÈ´Ù.
emacs¸¦ »ç¿ëÇØ¼ Äڵ带 Æ÷¸ËÆÃÇϴµ¥ ½ÇÆÐÇß´Ù¸é ÁÂÀýÇÒ ÇÊ¿ä ¾ø´Ù. "indent"¸¦ »ç¿ëÇÏ¸é µÈ´Ù.
GNU indent´Â GNU emacsó·³ ¾µ¸ð ¾ø´Â ¼³Á¤À» °¡Áö°í ÀÖ´Ù. À̰ÍÀÌ ¹Ù·Î ¸î ÁÙÀÇ Ä¿¸Çµå¶óÀÎ ¿É¼ÇÀ» ÁÖ¾î¾ß ÇÏ´Â ÀÌÀ¯´Ù. ±×·¯³ª, ³ª»ÚÁø ¾Ê´Ù. ¿Ö³ÄÇϸé GNU Àε§Æ®µµ K&RÀÇ ±ÇÀ§¿¡ ´ëÇØ¼´Â ÀνÄÇϰí Àֱ⠶§¹®ÀÌ´Ù (GNU »ç¶÷µéÀÌ ¾Ç¸¶´Â ¾Æ´Ï´Ù. ±×µéÀº ´ÜÁö ÀÌ ¹®Á¦¸¦ ½ÉÇÏ°Ô À߸ø ÀεµÇϰí ÀÖÀ» »ÓÀÌ´Ù), µû¶ó¼ Àε§Æ® ¿É¼ÇÀ¸·Î ´ÜÁö "-kr -i8" ("K&R", 8 ±ÛÀÚ Àε§Æ®¸¦ ÀǹÌÇÑ´Ù)¸¸À» ÁÖ¸é µÈ´Ù.
"indent"´Â ¸¹Àº ¼öÀÇ ¿É¼ÇÀ» °¡Áö°í ÀÖ´Ù. ƯÈ÷ . ÄÚ¸àÆ®¸¦ ´Ù½Ã Æ÷¸ËÆÃÇØ¾ß ÇÒ ¶§¿¡´Â ¸Å´º¾ó ÆäÀÌÁö¸¦ Çѹø Âë Àо´Â °ÍÀÌ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ±×·¯³ª ±â¾ïÇØ µÎ¾î¾ß ÇÒ °ÍÀº "indent"´Â À߸øµÈ ÇÁ·Î±×·¥À» °íÃÄÁÖÁø ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù.
éÅÍ 7: ȯ°æ ¼³Á¤ ÆÄÀÏ
ȯ°æ ¼³Á¤ ¿É¼Çµé(arch/xxx/config.in°ú ¸ðµç Config.in ÆÄÀϵé)À» À§Çؼ´Â ´Ù¸¥ Àε§Æ®°¡ »ç¿ëµÈ´Ù.
Äڵ忡¼´Â Àε§Æ® ·¹º§ 3ÀÌ »ç¿ëµÇ¾ú´Ù. ¹Ý¸é¿¡ ȯ°æ ¿É¼ÇÀ» À§ÇÑ ÅØ½ºÆ®¿¡¼´Â ÀÇÁ¸ °ü°è¸¦ ±¸ºÐÇϱâ À§Çؼ Àε§Æ® ·¹º§ 2¸¦ »ç¿ëÇÑ´Ù. ÈÄÀÚÀÇ °æ¿ì´Â ´ÜÁö bool/tristate(»ï»ó) ¿É¼Ç¿¡¸¸ Àû¿ëµÈ´Ù. ´Ù¸¥ ¿É¼Ç¿¡´Â ´ÜÁö »ó½ÄÀ» Àû¿ë½ÃŰ¸é µÈ´Ù. ¿¹¸¦ »ìÆìº¸ÀÚ.
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
tristate 'Apply nitroglycerine inside the keyboard (DANGEROUS)' CONFIG_BOOM
if [ "$CONFIG_BOOM" != "n" ]; then
bool ' Output nice messages when you explode' CONFIG_CHEER
fi
fi
ÀϹÝÀûÀ¸·Î, CONFIG_EXPERIMENTALÀº ¾ÈÁ¤ÀûÀÌÁö ¾Ê´Ù°í »ý°¢µÇ´Â ¸ðµç ¿É¼ÇÀ» µÑ·¯½Î°í ÀÖ¾î¾ß ÇÑ´Ù. µ¥ÀÌÅ͸¦ ÆÄ±«ÇÏ´Â °ÍÀ¸·Î ¾Ë·ÁÁø(ÆÄÀÏ ½Ã½ºÅÛ ¾²±â ±â´É Áö¿ø °°Àº) ¿É¼ÇµéÀº (DANGEROUS)·Î Ç¥±âµÇ¾î¾ß ÇÑ´Ù. ´Ù¸¥ ½ÇÇèÀûÀÎ ¿É¼ÇÀº (EXPERIMENTAL)·Î Ç¥±âµÈ´Ù.
éÅÍ 8: ÀÚ·á ±¸Á¶
´Ù¸¥ ¾²·¹µå¿¡¼ Á¢±ÙÇÒ ¼ö ÀÖ´Â ÀÚ·á ±¸Á¶µéÀº ¹Ýµå½Ã ·¹ÆÛ·±½º Ä«¿îÆ®¸¦ °¡Á®¾ß ÇÑ´Ù. Ä¿³Î ³»ºÎ¿¡´Â °¡ºñÁö Ä÷º¼ÇÀº Á¸ÀçÇÏÁö ¾Ê´Â´Ù (±×¸®°í Ä¿³Î °¡ºñÁö Ä÷º¼ÇÀº ´À¸®°í ºñÈ¿À²ÀûÀÌ´Ù). ±×°ÍÀº »ç¿ëÇÏ´Â °Í¸¶´Ù ¹«Á¶°Ç ·¹ÆÛ·±½º Ä«¿îÆ®¸¦ °¡Á®¾ß ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
·¹ÆÛ·±½º Ä«¿îÆ®´Â ¶ôÀ» ÇÇÇÒ¼ö ÀÖ°í, ¿©·¯ »ç¿ëÀÚµéÀÌ ÀÚ·á ±¸Á¶¿¡ º´·ÄÀûÀ¸·Î Á¢±ÙÇÏ´Â °ÍÀ» Çã¶ôÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. - ±×¸®°í ½½¸³À̳ª Àá½Ã µ¿¾È ´Ù¸¥ ÀÏÀ» ó¸®ÇÏ´À¶ó ÀÚ·á ±¸Á¶µéÀÌ °©Àڱ⠻ç¶óÁö´Â Çö»ó¿¡ ´ëÇØ¼ °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù.
¶ôÀÌ ·¹ÆÛ·±½º Ä«¿îÆ®ÀÇ ´ë¾ÈÀÌ µÉ ¼ö ¾øÀ½À» ¾Ë¾Æ¾ß ÇÑ´Ù. ¶ôÀº ÀÚ·á ±¸Á¶µéÀÌ Àϰü¼ºÀ» À¯ÁöÇϱâ À§Çؼ »ç¿ëÇÑ´Ù. ¹Ý¸é¿¡ ·¹ÆÛ·±½º Ä«¿îÆ®´Â ¸Þ¸ð¸® °ü¸® Å×Å©´ÐÀÌ´Ù. ÀϹÝÀûÀ¸·Î µÑ ´Ù ÇÊ¿äÇÏ°í ±×°ÍµéÀÌ ¼·Î È¥¶õ½º·´Áö ¾Ê´Ù.
¸¹Àº ÀÚ·á ±¸Á¶µéÀº ´Ù¸¥ "classes"ÀÇ À¯ÀúµéÀÌ ÀÖÀ» ¶§, µÎ °¡Áö ´Ü°èÀÇ ·¹ÆÛ·±½º Ä«¿îÆ®¸¦ °¡Áö°í ÀÖ´Ù. subclass Ä«¿îÆ®´Â subclass »ç¿ëÀÚµéÀÇ °³¼ö¸¦ Çì¾Æ¸°´Ù. ±×¸®°í Àü¿ª Ä«¿îÆ®´Â subclass Ä«¿îÆ®°¡ 0ÀÌ µÇ¾úÀ» ¶§ ´ÜÁö Çѹø¸¸ °¨¼Ò ½ÃŲ´Ù.
ÀÌ·¯ÇÑ Á¾·ùÀÇ ´ÙÁß ·¹ÆÛ·±½º Ä«¿îÆÃ(multi-reference-counting)Àº ¸Þ¸ð¸® °ü¸®("struct mm_struct": mm_users¿Í mm_count)¿¡¼ ¹ß°ßµÈ´Ù. ¶ÇÇÑ ÆÄÀÏ ½Ã½ºÅÛ("struct super_block": s_count ¿Í s_active) Äڵ忡¼µµ º¼ ¼ö ÀÖ´Ù.
ºÐ¸íÇÏ°Ô ±â¾ïÇØ¾ß ÇÒ °ÍÀº ´Ù¸¥ ¾²·¹µå¿¡¼ ÂüÁ¶ÇÏ´Â ÀÚ·á ±¸Á¶¿¡ ·¹ÆÛ·±½º Ä«¿îÆ®°¡ ¾ø´Ù¸é, ´ëºÎºÐÀÇ °æ¿ì °Å±â¿¡´Â È®½ÇÇÑ ¹ö±×°¡ ÀÖ´Ù´Â °ÍÀÌ´Ù.