From: Katsuyuki Komatsu Date: 1999-05-17T13:01:56+09:00 Subject: [ruby-dev:6836] gcc -traditional or -ansi (Re: Ruby 1.3.3-990513) 小松です。 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