In article <3990311news.pl@insigna.ie.u-ryukyu.ac.jp>
        kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> 河野真治 @ 琉球大学情報工学です。
> > データ構造で構造体の相互参照が出てくるのは、表現したい対象が
> > そうなっているなら、そうするんじゃないですか。自然だし。
> 自然だったら、#include も自然になって欲しいですよね〜
>  #ifndef HOGE_H が自然だってなら、自然なわけだけどさ。

はい。

(defun insert-prototype-h ()
  (interactive)
  (insert "
/*
        dir/name.h
        $Header$
        Created on: ")
  (insert-date)
  (insert      "
*/

#ifndef _DIR_NAME_H_
#define _DIR_NAME_H_

#endif  _DIR_NAME_H_

/* --------------------- dir/name.h --------------------- */
" ))

>  #import は、そのあたりの面倒を見てくれるはずだけど。

C言語なんですか?

> 相互参照は、
>            A ⇔ B
> なんだけど、実は、
>           A →   C  ←  B
> ってことが多いんだと思う。で、C は、そういうことを期待している
> 言語なんでしょう。

そうでしょうね。もっと言うと、「a.c がコンパイルできれば、O
K」なので、モジュールの依存関係はどうでもよくて、

・呼ぶ関数の型宣言が入っている .h を includeする。
・ポインタではない struct xxx が出ている .h を includeする。

ということなのでしょう。それで、 a.h, b.h には、でも、struct 
本体は、書かないで隠したくなるんだけどなあ。a.c, b.c の方に
定義して。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\