[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00052] Re: malloc define (Re: configure for HP-UX andOpenBSD)




古川竜雄です。

片山さん> 一般に、ライブラリーの関数を使う場合は、プログラム中で宣言し
片山さん> ない方がよいです。

片山さん> #宣言はシステムのヘッダーに任せる

片山さん> 特に、K&R C と ANSI C のどちらでもコンパイルできるようにする
片山さん> 場合は「宣言してはいけない」くらいに考えてもいいです。

GNU Coding Standard にもそう書いてありました。というわけで、

矢吹さん> 現在の configure で ANSI C 準拠のヘッダがあるかどうかチェッ
矢吹さん> クしてるので(autoconf のマクロだと AC_HEADER_STDC)、その結果
矢吹さん> 定義される STDC_HEADERS で判定するというのはどうでしょうか?
矢吹さん> STDC_HEADERS が 1 に定義されていれば、stdlib.h で宣言されて
矢吹さん> いるはずなので、ソースコードでは malloc() の宣言は行なわない
矢吹さん> と。

ここまでする必要はないと思いますがいかがでしょう?

もし、古いCコンパイラしかないような OS に対応しなければならない場合は、
それ専用のヘッダファイルを読み込むようにしておくという逃げ道を用意して
おくということで。

私としてはできるだけ標準にのっとったソースコードにしたいです。非標準な 
OS のためにソースコードをややこしくすることはしたくない。でも頭に 
#include 文がいっぱいつくぐらいなら許してやってもいいかな。

例えば bcopy() じゃなくて memcpy() を使うという風に。んで、memcpy() の
ない OS があったら、その OS 専用のヘッダファイルに memcpy を bcopy に 
#define するような記述を埋め込んでおく。

# memcpy() と bcopy() の違いくらいなら configure が吸収してくれてしま
# いますけどね。これは例が悪いですけど、そういう方針がいいのではないか
# という意味です。

-- 
古川竜雄 (frkwtto@osk3.3web.ne.jp) / FreeWnn Project