こんにちは、なかむら(う)です。

In message "[ruby-dev:13900] Re: Prototype for rb_gc_mark / volatile in ruby.h"
    on 2001/07/17, Kenta MURATA <muraken2 / nifty.com> wrote:
| VC++ の cl.exe で -Za を付けると, MSDN Library で ``Microsoft 
| 固有拡張'' として紹介されているものがあらゆる無効になったと思
| います.  だから, declspec 等もダメになり, もしかしたら 
| __stdcall なんかもダメになるかもしれません.

考えようによっては正しい動作のような気もしないではないですが、
手元に規格書がないのでなんとも言えません。


| > 現状のrubyのソースを考えると、__STDC__を自前で定義するよりも
| > __STDC__でコードを変えてる部分を個別にいじった方が作業量は
| > だいぶ少なそうです。
| > それもなんかやですが、致命的なのはruby.hとregex.cにあるvolatile
| > 絡みくらい(あとはプロトタイプ宣言の有無程度)なので、そこだけ
| > 対応で十分かもしれません。
| 
| 僕もその方が懸命だと思います.  gcc と同じコードを使う場合は 
| VC++ は捨てた方が楽なんですねぇ.

というわけなので、最小限のパッチです。
まぁ、__STDC__の数はたかがしれてるので全部対応してもいいかな
ぁ、とか思いつつありますけど。


Index: ruby.h =================================================================== RCS file: /src/ruby/ruby.h,v retrieving revision 1.50 diff -u -p -r1.50 ruby.h --- ruby.h 2001/07/14 15:17:19 1.50 +++ ruby.h 2001/07/17 00:56:13 @@ -45,7 +45,7 @@ extern "C" { #define ISDIGIT(c) isdigit((unsigned char)(c)) #define ISXDIGIT(c) isxdigit((unsigned char)(c)) -#ifndef __STDC__ +#if !defined(__STDC__) && !defined(_MSC_VER) # define volatile #endif Index: regex.c =================================================================== RCS file: /src/ruby/regex.c,v retrieving revision 1.47 diff -u -p -r1.47 regex.c --- regex.c 2001/07/14 15:17:19 1.47 +++ regex.c 2001/07/17 00:56:15 @@ -51,7 +51,7 @@ # include <sys/types.h> #endif -#ifndef __STDC__ +#if !defined(__STDC__) && !defined(_MSC_VER) # define volatile #endif
それでは。 -- U.Nakamura <usa / osb.att.ne.jp>