いいじまです。

> >   この為、バグの温床に成りやすく思うのですが、
> > 何か良い方法が有るのでしょうか?
> 
> C で書く時は C の作法で考えるように頭を切替える
> のがいいと思います.

C の関数では、単に「ゼロかゼロ以外か」ではなく、ゼロ以外の返り値に色々な
意味を持たせることがありますから、それをふまえるべきでしょう。

たとえば、strcmp()、memcmp() は「同一」という結果に対して 0 を返しますが、
2つの引数で与えられた内容のどちらが大きいかによってプラスの値もマイナス
の値も返します。

ポインタを返す関数の場合、0 すなわち NULL が返ってきたら失敗の意味だけど、
非 NULL が返ってきたらそれは有効なポインタ、というのが定石。
malloc() しかり、fopen() しかり。

どんな理由で失敗したのかを関数の値として返す場合は、0 が「成功」で、
1 以上はそれぞれの数値が個々の失敗理由と対応する。
プログラムの終了コードも同様。

一方で、isalpha() の類は YES のときに非 0 を返す典型例ですね。

========================================================================
飯嶋 浩光 / でるもんた・いいじま   http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta           mailto:delmonta@ht.sakura.ne.jp

───【宣伝/ADVERTISEMENT】──────────────────────
fj.os.ms-windows 新設の議論(CFD)中です。
※7/25 から投票採決(CFV)の予定です。詳しくは fj.news.group.comp へ。※
────────────────────────────────────