Next: , Up: Writing C   [Contents]


5.1 ¤¢¤Ê¤¿¤Î¥½¡¼¥¹¥³¡¼¥É¤Î½ñ¼°

C´Ø¿ô¤ÎËÜÂΤò³«»Ï¤¹¤ë³«¤­Âç³ç¸Ì¤ò¥¼¥íÎóÌܤËÃÖ¤­¡¢Â¾¤Î³«¤­Âç³ç¸Ì¤ä³«¤­´Ý ³ç¸Ì¤ä³«¤­³Ñ³ç¸Ì¤ò¥¼¥íÎóÌܤËÃÖ¤«¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Î¤Ï½ÅÍפÀ¡£¤¤¤¯¤Ä¤«¤Î¥Ä¡¼ ¥ë¤Ï¡¢C´Ø¿ô¤Î»Ï¤Þ¤ê¤òõ¤¹¤Î¤Ë¡¢¥¼¥íÎóÌܤ㫤­Âç³ç¸Ì¤òÁܤ¹¡£¤³¤ì¤é¤Î¥Ä¡¼ ¥ë¤Ï¤½¤¦¤¤¤¦É÷¤Ë¥Õ¥©¡¼¥Þ¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥³¡¼¥É¤Ç¤Ï¾å¼ê¤¯Æ°¤«¤Ê¤¤¤À¤í¤¦¡£

´Ø¿ôÄêµÁ¤Ç¡¢´Ø¿ô¤Î̾Á°¤¬¥¼¥íÎóÌܤǻϤޤäƤ¤¤ë¤³¤È¤â½ÅÍפÀ¡£¿Í¡¹¤Ï¤³¤ì¤Î ¤ª¤«¤²¤Ç´Ø¿ôÄêµÁ¤òõ¤¹¤Î¤¬³Ú¤Ë¤Ê¤ê¡¢¤¢¤ë¥Ä¡¼¥ë¤¬¤½¤ì¤é¤òǧ¼±¤¹¤ë¤Î¤â³Ú¤Ë ¤Ê¤ë¤«¤â¤·¤ì¤Ê¤¤¡£¤³¤¦¤·¤Æ¡¢Å¬Àڤʽñ¼°¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡£

static char *
concat (s1, s2)        /* Name starts in column zero here */
     char *s1, *s2;
{                     /* Open brace in column zero here */
  …
}

¤¢¤ë¤¤¤Ï¡¢¤â¤·ANSI C¤ò»È¤¤¤¿¤¤¤Ê¤é¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤ò¥Õ¥©¡¼¥Þ¥Ã¥È¤¹ ¤ë¡£

static char *
concat (char *s1, char *s2)
{
  …
}

ANSI C¤Ç¤Ï¡¢¤â¤·°ú¿ô¤¬¾å¼ê¤¯°ì¹Ô¤Ë¼ý¤Þ¤é¤Ê¤¤¤Ê¤é¡¢¼¡¤Î¤è¤¦¤Ë¤½¤ì¤ò ʬ¤±¤ë¡£

int
lots_of_args (int an_integer, long a_long, short a_short,
              double a_double, float a_float)
…

´Ø¿ô¤ÎËÜÂΤǤϡ¢¼¡¤Î¤è¤¦¤Ë¥Õ¥©¡¼¥Þ¥Ã¥È¤µ¤ì¤¿¥³¡¼¥É¤ò¹¥¤ó¤Ç¤¤¤ë¡£

if (x < foo (y, z))
  haha = bar[4] + 5;
else
  {
    while (z)
      {
        haha += foo (z, z);
        z--;
      }
    return ++x + bar ();
  }

²æ¡¹¤Ï³«¤­´Ý³ç¸Ì¤ÎÁ°¤È¥³¥ó¥Þ¤Î¸å¤Ë¥¹¥Ú¡¼¥¹¤¬¤¢¤ë¤È¥×¥í¥°¥é¥à¤òÆÉ¤à¤Î¤¬¤è ¤ê´Êñ¤Ç¤¢¤ë¤³¤È¤ò¸«½Ð¤·¤Æ¤¤¤ë¡£¤È¤ê¤ï¤±¥³¥ó¥Þ¤Î¸å¤Ï¡£

¼°¤òÊ£¿ô¹Ô¤Ëʬ¤±¤ë¤È¤­¡¢±é»»»Ò¤Î¸å¤Ç¤Ï¤Ê¤¯¡¢¤½¤ì¤ÎÁ°¤Çʬ¤±¤ë¡£¤³¤¦¤¹¤ë¤Î ¤¬Àµ¤·¤¤¤ä¤êÊý¤À¡£

if (foo_this_is_long && bar > win (x, y, z)
    && remaining_condition)

»ú²¼¤²¤¬Æ±¤¸¤È¤³¤í¤Ç¡¢°Û¤Ê¤ëÍ¥ÀèÅÙ¤ÎÆó¤Ä¤Î±é»»»Ò¤ò»ý¤¿¤Ê¤¤¤è¤¦¤Ë¤·¤Ê¤µ¤¤¡£ Î㤨¤Ð¡¢¤³¤¦½ñ¤¤¤Æ¤Ï¤¤¤±¤Ê¤¤¡£

mode = (inmode[j] == VOIDmode
        || GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])
       ? outmode[j] : inmode[j]);

Âå¤ï¤ê¤Ë¡¢»ú²¼¤²¤¬Æþ¤ì»Ò¤òɽ¤¹¤è¤¦¡¢Í¾Ê¬¤Ê´Ý³ç¸Ì¤ò»È¤¦¡£

mode = ((inmode[j] == VOIDmode
         || (GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])))
        ? outmode[j] : inmode[j]);

Emacs¤¬¤½¤Î¥³¡¼¥É¤òŬÀڤ˻ú²¼¤²¤¹¤ë¤è¤¦¡¢Í¾Ê¬¤Ê´Ý³ç¸Ì¤òÆþ¤ì¤Ê¤µ¤¤¡£Î㤨 ¤Ð¡¢¼¡¤Î»ú²¼¤²¤Ï¼ê¤Ç¤ä¤ë¤È¤¤¤¤´¶¤¸¤À¤¬¡¢Emacs¤ÏÂæ¤Ê¤·¤Ë¤·¤Æ¤·¤Þ¤¦¡£

v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
    + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000;

¤Ç¤â³«¤­³ç¸Ì°ìÁȤò²Ã¤¨¤ë¤ÈÌäÂê¤Ï²ò·è¤¹¤ë¡£

v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
     + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000);

do-whileʸ¤Ï¼¡¤Î¤è¤¦¤Ë¥Õ¥©¡¼¥Þ¥Ã¥È¤¹¤ë¡£

do
  {
    a = foo (a);
  }
while (a > 0);

¥Õ¥©¡¼¥à¥Õ¥£¡¼¥Éʸ»ú (control-L) ¤ò»È¤Ã¤Æ¡¢¥×¥í¥°¥é¥à¤ò(´Ø¿ô¤ÎÃæ¤Ç¤Ï¤Ê¤¯) ÏÀÍýŪ¤Ê°ÌÃ֤ǥڡ¼¥¸¤Ëʬ³ä¤·¤Æ¤Û¤·¤¤¡£¥Ú¡¼¥¸¤¬¤É¤ì¤°¤é¤¤¤ÎŤµ¤«¤Ê¤ó¤ÆÌä Âꤸ¤ã¤Ê¤¤¡£°õºþ¤µ¤ì¤ë¥Ú¡¼¥¸¤Ë¹ç¤ï¤»¤Ê¤¯¤Æ¤¤¤¤¤Î¤À¤«¤é¡£¥Õ¥©¡¼¥à¥Õ¥£¡¼¥É ¤Ï¹Ô¤ÎÃæ¤Ë¤½¤ì¼«¿È¤À¤±¤òÃÖ¤¯¤Ù¤­¤À¡£