YamaKen
yamak****@bp*****
2005年 2月 11日 (金) 08:47:48 JST
ヤマケンです。 At Thu, 10 Feb 2005 14:40:06 -0800, jun00****@hotpo***** wrote: > On Thu, 10 Feb 2005 09:38:41 +0900 > YamaKen <yamak****@bp*****> wrote: > > 検証の方ですが、特にslib.cのlreadr()で関数ブロックローカルに > > returnをマクロとして再定義している部分がポータブルかどうか判断が > > 付いてません。 > > 何が問題なのかいまいちわからないのですが、return() マクロ内で return() > が使われてることでしたら、C99 6.10.3.4 に > [#2] If the name of the macro being replaced is found during > this scan of the replacement list (not including the rest of > the source file's preprocessing tokens), it is not replaced. > とあるので、大丈夫です。 そっちは問題だとは思ってませんので大丈夫です。 私が気にしてるのはreturn()マクロの有効範囲です。gcc -Eの結果から するとlreadr()内のreturn()のみが置き換えられているようですが、伝 統的なプリプロセッサではブロックを無視してファイルの末尾まで置換 が行われると理解していたので。uimではC99の機能は使わない事にして います。 slib.cはslib.oにコンパイルしてからリンクするのではなくuim-scm.c で直接#include "slib.c"しているので、環境によってはそっちの return()も置換されてしまうんじゃないかと心配しているわけです。 ------------------------------- ヤマケン yamak****@bp*****