有馬です。

ruby のコンパイル作業中に躓いたので、C のレベルで質問させてください。

node.c では、以下のような順序でヘッダを取り込んでいます。

#include "ruby.h"
#include "node.h"

この node.h では、先に ruby.h が include されていることを前提にしています。
おそらくこの順序である限り、node.c がコンパイル可能だと思ってました。

ところが、WATCOM C 11.0 君は、node.h の処理中に、「VALUE が定義されていない」
「ID が定義されていない」と文句をつけます。
よもやと思って、#include "ruby.h" を node.h の中に書いたところ、あっさり
node.c がコンパイルできました。どうやら、ヘッダファイルを単独で解釈しようと
するようです。

この処理系の実装に問題があるのは確かなのですが、考え方がそれほどまちがって
いるわけでもないと思います。
例えば、FILE * を参照するヘッダファイルでは、 #include <stdio.h> があるのは
普通ですよね。とすると、この場合も node.h の中でも ruby.h を include するのが
適切なのではないかという質問です。

# こんなところで躓いているのでなかなか先に進めない...

ところで、mingw32 という cygwin32 を改造した規格があるようですが、
使っている方はいらっしゃいませんか?

--
 有馬 康弘 <fit0298 / fitec.co.jp>