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

[freewnn:00340] Re: patch: HAVE_MKDIR



古川竜雄です。

元木さん>  現状の configure は -DHAVE_CONFIG_H を付けてくれないのでイ
元木さん>  イカゲンな方法で config.h のインクルードをしていますがご容
元木さん>  赦を :-(

すいませんでした。@DEFS@ を CFLAGS に反映させる必要があるみたいですね。


元木さん>  また、de.c #include <config.h> は #include "config.h" でな
元木さん>  いでしょうか? #include <config.h> としている理由があるのな
元木さん>  らば教えて下さい。

#include <〜> と "〜" の違いは以下の通りで、

    #include <〜>      -I で指定されたディレクトリ、デフォルトインク
                       ルードパスを検索。
    #include "〜"      まず、カレントディレクトリを検索、その後は
                       #include <〜> と同じ

<config.h> は必ずトップディレクトリのものをインクルードしなければなり
ません。そのため、コンパイルする時に -I オプションでトップディレクトリ
を指定しています。(本来、これは相対パスになるのですが、手抜きで絶対パ
スになっています)。もし、#include "config.h" だと、たまたまカレントディ
レクトリに config.h が存在した場合そちらが読み込まれてしまいます(こん
なことは滅多に起こらないと思いますが…)。そういったトラブルを避けるた
めに #include <config.h> を使います。カレントディレクトリのファイルは
無視するので、指定したインクルードパスから読み込まれることが保証されま
す。

では #include "〜" はどういう時に使うかというと、「カレントディレクト
リのヘッダファイルを読み込みたい」ときです。-I. とオプションを指定する
と #include <〜> でも同じ効果が出ますが、それでは前述の <〜> ならでは
の特徴が生かせません。-I. は指定せず、<〜> と "〜" を使い分けるのが良
い方法です。


…というのが、私が昔教わった <〜> と "〜" の使いわけの方法です。

もっともらしい理由がついていますが、実用上はほとんど問題にならないもの
ですので、#include "config.h" の方が一般的でしたらそのように直します。:-)


元木さん>  ついでに HAVE_RAND_MAX を使っているのはなぜなのでしょうか?

これは完全に私のミスです。ややこしいことヤリスギでした。


元木さん>     config.h.in : autoheader で作成したもの。
元木さん>      acconfig.h : autoheader で追加されないもの。

元木さん> こっちの方が config.h.in への追加ミスなどがなくて良いのでは
元木さん> ないでしょうか?

このやりかたが本来のものみたいですね。実は見よう見まねで configure の
部分をさわったのでボロが出まくってます。autoconf のマニュアルをもう一
度読み直さねば…

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