えぐち@エスアンドイー です。

>>> In message [ruby-dev:8713] Re: [win] dir name
    On Fri, 24 Dec 1999 14:03:35 +0900, Koji Oda <oda / bsd1.qnes.nec.co.jp> said:

oda> 小田@QNES です。
oda> 
oda> ---
oda> On Fri, 24 Dec 1999 13:20:21 +0900
oda> [[ruby-dev:8712] Re: [win] dir name]
oda> EGUCHI Osamu <eguchi / shizuokanet.ne.jp> wrote:
oda> 
oda> > えぐち@エスアンドイー です。

oda> > 気になっていたのですが、
oda> > 
oda> > 	defined(__cplusplus)
oda> > 
oda> > が真って事は、C++ ソースとして ruby のソースをコンパイルしてませんか?
oda> > これで(プロトタイプ宣言で引数の型を教えていないのに)リンケージが
oda> > うまく行きますか?
oda> > #ってうまく行ってんだろうなぁ、動いてるんだから。
oda> 
oda> ええ。上手くいってます。
oda> ただ、ruby そのもの(ruby.exe & rubymw.dll) は、Cとしてmake
oda> しています。
oda> C++拡張モジュール をmake する際に、include ruby.h してますので
oda> > 	defined(__cplusplus)
oda> は、その時に使われる定義です。

なるほど、そうすると
math.h が C++ から include される時に、 "C" なリンケージになっていると
テンプレートの箇所でエラーになるって事ですね。

#単に MSC の math.h に extern "C++" 不足のバグがあるだけ?

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

.cc が C だと思われた記憶が、遠い昔にあります。

	えぐち