[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00727] Re: recent patches
小野寛生です
ちょっとだけ。
aono> すみません、どうやらSolaris (2.4と8で確認)では、_Pマクロが
aono> ctype.hで定義されていて、コンパイルできません(;_;)。
aono> #(詳しくは分かりませんが)ISO Cで定義されているくらいなの
aono> #だから、その内標準になるのでしょうが…。
書き方悪くてごめんなさい。ISO C では定義されていません。
ISO C をサポートというのは、(主にコンパイル時のチェックをコンパイラに
行なってもらいやすくするために) ANSI/ISO C のプロトタイプ宣言に変更す
るということです。
で、そうすると、K&R C サポートが broken になるので、
>> #if !defined(_P)
>> # if (defined(__STDC__) && (__STDC__)) || defined(_cplusplus)
>> # define _P(p) p
>> # else
>> # define _P(p) ()
>> # endif
>> #endif
というマクロをいれるという話が、GNU Coding Standard や C FAQ に書かれ
ています (積極的に推奨はされていませんが)。
とりあえず、_() か P_() のどちらかにかえましょうか。
『エキスパート C プログラミング』という本だと、K&R style と ANSI style
のプロトタイプ宣言、関数定義をまぜるなと書かれていることもあって、迷う
ところなんですが…。