小松です。

In the message of [ruby-dev:6791] Re: Ruby 1.3.3-990513 
    on 1999/5/13 23:21:38 itojun / iijlab.net wrote:
>>    __constってどうしていままで通ってたんだろうと思ったら、
>>    gccならOKなんですね。
>
>	AC_C_CONST(だっけ)して、constを使うべきです。

なるほど、gccのalternative keywordsというものでしたか。
    http://docs.freebsd.org/info/gcc/gcc.info.Alternate_Keywords.html
勉強になりました。

gcc.infoでは__const__になってますが、gcc-2.8.1/c-parse.gperfを
みると両方サポートしていますね。

ChangeLogによると1989年には導入されていたのか……

== gcc-2.8.1/ChangeLog.1

Wed Mar 29 09:54:13 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (is_reserved_word): Add keywords __asm and __inline;
	also __const and __volatile.
	(yylex): Keywords that start with `__' are recognized regardless of
	-traditional or -ansi.

	/	/	/

そうそう、gccの-traditionalと-ansiでもhpuxの定義に違いがでます。

% uname -s -r
HP-UX B.10.20
% gcc -traditional ruby-dev-6775.c; ./a.out
'hpux' is defined.
'__hpux' is defined.
% gcc -ansi ruby-dev-6775.c; ./a.out
'hpux' is not defined.
'__hpux' is defined.
% 

SunOS, Solarisのsunの定義でも同様 (t.cはhpuxをsunに変換したもの)。

% uname -s -r
SunOS 5.5.1
% gcc -traditional -o t t.c; ./t
'sun' is defined.
'__sun' is defined.
% gcc -ansi -o t t.c; ./t
'sun' is not defined.
'__sun' is defined.
% 

% uname -s -r
SunOS 4.1.4-JL
% gcc -traditional -o t t.c; ./t
'sun' is defined.
'__sun' is defined.
% gcc -ansi -o t t.c; ./t 
'sun' is not defined.
'__sun' is defined.
% 

--
小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>