Re: Mutual refrence of struct / 構造体相互参照
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 の方に
定義して。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735