まつもと ゆきひろです

In message "[ruby-dev:10089] Re: [ruby-ext:00646] have_func in extconf.rb"
    on 00/06/19, Hiroshi IGARASHI <igarashi / ueda.info.waseda.ac.jp> writes:
|
|いがらしです。
|去年のメイルですがreplyがつかなかったので……ruby-devに振ります。
|
|At Thu, 02 Dec 1999 15:06:43 +0900,
|in [ruby-ext:00646] have_func in extconf.rb,
|Hiroshi IGARASHI <igarashi / ueda.info.waseda.ac.jp> wrote:
|
|> mkmf.rbあるいはextmk.rbが提供しているhave_funcメソッドで
|> 特定の関数の存在をチェックできるはずですが……
|> もし関数と思っていたものがマクロで定義されているとしたら、
|> 見つからないことになりますよね。
|> 
|> mkmf.rbなどでは
|> 
|> /* #include <iconv.h> */
|> int main() { return 0; }
|> int t() { #{func}(); return 0; }
|> 
|> というプログラムをコンパイルすることによって調べているようですが、
|> 上のコメントのようにincludeするヘッダファイルも指定できるといいなと
|> 思います。例えばhave_func("iconv", "iconv.h")とか。
|
|この通りhave_funcにheaderを指定できるようにしたら、
|今度はマクロ定義だけでなくprototype宣言も与えられたため、
|単に無引数で呼び出しても引数の検査でコンパイルエラーに
|なってしまいます。
|
|[ruby-dev:9974]で、/mswin32|mingw/ =~ RUBY_PLATFORM な環境では
|関数呼出と関数ポインタの参照の両方でチェックする必要がある
|とのことですが、他の環境でも両方チェックするようにすれば
|とりあえず引数検査でのエラーは避けられます。
|
|というわけでパッチをつけておきます。

取り込みます。