小田@QNES です。

---
On Fri, 24 Dec 1999 13:20:21 +0900
[[ruby-dev:8712] Re: [win] dir name]
EGUCHI Osamu <eguchi / shizuokanet.ne.jp> wrote:

> えぐち@エスアンドイー です。
> 
> oda> > > 最初に } が来るのは、驚きが多いので(笑)
> oda> > > defines.h でなく、 ruby.h で win32.h を include して、
> oda> > > その時に extern "C" の囲いをとるのが、無難に思います。
> oda> >
> oda> > extern "C++" {} ではだめですか?
> oda> 
> oda> おぉ!
> oda> こんなのがあるんですか。知りませんでした(^^;;;
> 
> 気になっていたのですが、
> 
> 	defined(__cplusplus)
> 
> が真って事は、C++ ソースとして ruby のソースをコンパイルしてませんか?
> これで(プロトタイプ宣言で引数の型を教えていないのに)リンケージが
> うまく行きますか?
> #ってうまく行ってんだろうなぁ、動いてるんだから。

ええ。上手くいってます。
ただ、ruby そのもの(ruby.exe & rubymw.dll) は、Cとしてmake
しています。
C++拡張モジュール をmake する際に、include ruby.h してますので
> 	defined(__cplusplus)
は、その時に使われる定義です。

> それとも MSC は C コンパイラとして使っても、__cplusplus が定義される?

いえ、定義されません。
MSVC は、ソースファイルの拡張子で判断しているみたいで、.c の時は
C コンパイラとして、.cpp の時は C++ コンパイラとして動きます。
# でも、.cxx ってやると C と見なされるみたい(^^;

∪*****/\*****\/*****/\*****∪
  Koji Oda  NEC Software Kyusyu
  1st Development Department
   Based Software Division
  E-Mail:oda / bsd1.qnes.nec.co.jp
∩*****/\*****\/*****/\*****∩