コーディング規約 トップページC/C++ コーディング規約 目次 

1.11 C言語ソースファイルの記述例

 C言語ソースファイルの記述例を以下に示す。
 ソースファイルの履歴のコメント,ソースファイルの頭書きなどは以下の順番で記述する。
 基本的には、C++のコメントの"//"が"/* 〜 */"に変更されたのみである。
 ただし、関数の処理説明の書き方が、"///"から"/*c 〜 */"、"////"から"/*t 〜 */"に変更される。
 関数定義書の中の段下げは,"t"の数により深くすることができる。

■ ファイルの記述例

/* @(h) Comment.c ver 2.0 ( '07.09.13 今井 浩司 ) */
/* @(h) Comment.c ver 1.0 ( '07.09.01 今井 浩司 ) */

/* @(s)
 *  ファイルI/O関数群
 *   本ファイルはファイル入出力に関する関数群を
 *   集めたものである。
 */
#define HC_MAX_PATH    128   /* フルパス 最大文字列数 */
#define HC_MAX_EXT     3    /* 拡張子 最大文字列数 */
#define HC_MAX_FILENAME 128   /* ファイル名 最大文字列数 */
#define HC_MAX_DATE    9    /* 日付 "YY/MM/DD" */

#define NUMBER_OF(a) \
    ( sizeof(a) / sizeof(a[0]) )  /* 配列の要素数を得る */

typedef struct Memory {  /* メモリ上のバッファ */
  char *s;           /* 文字列 */
  struct Memory *next;   /* リスト構造ポインタ */
} MEMORY;

union u_tag {  /* タグ共用体 */
  int ival;    /* 整数 */
  float fval;   /* 実数 */
  char *sval;  /* 文字列 */
} u;

enum Boolean {  /* ブール型定数 */
  False,       /* 偽 */
  True        /* 真 */
};

■ 関数定義部の記述例

/*
 * 機能 : 文字位置の取得
 *
 * 返り値 : 文字位置[byte](検索されなかった場合は 0を返す)
 *
 * 機能説明 : 文字列の中から,指定文字列を検索し位置を返す。
 *
 * 備考 : pStrInStr( "a#c#d#eeee", "#" ) -> 2
 *     pStrInStr( "a#c#d##eeee", "##" ) -> 6
 *     pStrInStr( "abcdeabcde", "AA" ) -> 0
 */
int pStrInStr(tarstr, srcstr)
  const char *tarstr; /* 検索される対象の文字列 */
  const char *srcstr; /* 検索する指定部分文字列 */
{
  int nsrc = strlen(srcstr);
  int ntar = strlen(tarstr);
  int i;
 
  /*c 文字列の長さ分ループする */
  for (i = 0; i < ntar; i++)
  {
    /*t ヒットした場合カウントアップし,それを返り値とする */
    if (strncmp(tarstr+i, srcstr, nsrc) == 0)
      return (i+1);
    /*tt 更にインデントがある場合 */
  }
  return (0);
}