Cの自作関数における戻り値について


初心者な質問で申し訳ありません。

Cで自作関数を作成した場合、  
戻り値で何を返すか迷ってしまいます。

戻り値の型をint型とした場合、  
エラー時は-1を返すべきなのか0を返すべきなのか

また、戻り値の型をchar *等ポインタ型にした場合、  
エラー時は空のポインタを返せばよいのか

上記以外にもありますが、  
皆さんのアドバイス、ご意見をお願いします。




> 戻り値の型をint型とした場合、  
>  エラー時は-1を返すべきなのか0を返すべきなのか

いずれにせよ、「一貫性を持つ」というのが重要です。

他のライブラリと一緒に使う場合、ライブラリにおいて0をエラーとして返す関数で構成されている場合、自作関数もそれに合わせる(一貫性のため)のが混乱を減らせると思います。

ただ、複数のライブラリと組み合わせる場合、あるライブラリでは0エラーで、他のライブラリで-1エラーとなっている場合、一貫性は持たせられません。

この場合は、別途、エラーがわかりやすい書き方をしておく方がいいでしょう。

[code]

    if (val < 10) {
        return 0;
    }
    
[/code]

というコードでは、`return 0`が正常終了なのか、異常終了なのかわかりません。

なので、

[code]

    if (val < 10) {
        return NO_ERROR;
    }
    
[/code]

なり

[code]

    if (val < 10) {
        return ERR_OUT_OF_RANGE;
    }
    
[/code]

というような書き方にしておくと、後々のソースリーディングが楽になります。

