メモの日々


2003年12月11日(木) [長年日記]

[c] __P

既存のソースを見ていたら、関数宣言に「__P」というマクロを使用していた。これの意味を知らなかったのでF先生に教えてもらった。ANSI Cの関数宣言を理解できないコンパイラへの配慮のようだ。

NetBSDでは sys/cdefs.h にて

#if defined(__STDC__) || defined(__cplusplus)
#define __P(protos) protos      /* full-blown ANSI C */
 …
#else   /* !(__STDC__ || __cplusplus) */
#define __P(protos) ()      /* traditional C preprocessor */

と定義されていた。

FreeBSDの man style に__Pについての記述があり、4.7と5.1で内容が変わっているようだ。

FreeBSD4.7のman

一般にソースファイルが K&R 旧約聖書コンパイラでコンパイル可能である (べき) 時にのみ、インクルードファイル <sys/cdefs.h> の __P マクロを使用します。新しいコードでの __P マクロの使用は反対されていますが、既存のファイルに対する修正はそのファイルの規約と首尾一貫しているべきです。

FreeBSD5.1のman

__P マクロは使用しません。

__Pは古臭い習慣だと思っていいのだろうか。

某日記にもコメントがあった。

あと、__P に関しては、 最近は FreeBSD / OpenBSD で排斥が進んでますが、 NetBSD では反対意見が出たのでそのままです。

プログラムの性質によって、古い処理系を考慮する必要があるかどうかプログラマが判断すべきなのだろう。

追記

__Pマクロの解説記事があったのでメモ。

プチショック(2)

暖房つけているのになんだか寒いなあと思っていたら、冷蔵庫の扉が開いていた。

[book] リング (鈴木光司)

リング(鈴木光司/著)

イマサラながら読みました。怖い話という先入観があったためか、全然怖くなかった。ビデオとか貞子とか知れ渡っているしなあ。でも続編は読みたいかも。3点。

生活

ヘッダファイルを書いてみている所。Cって色々面倒だなあ。

夜は食べ放題へ。Kくんはシャワーを浴びながらバナナやおにぎりを食べるそうな。そらパイプも詰まるよ。

やること

  • 相澤くんに4500円払う。