標準 C ライブラリの多くの関数、特に文字列操作用の関数、特に strcpy() は、次のプロトタイプを共有しています。
char *the_function (char *destination, ...)
これらの関数の戻り値は、実際には提供された と同じdestination
です。冗長なものの戻り値を無駄にするのはなぜですか? このような関数は、無効にするか、何か有用なものを返す方が理にかなっています。
これがなぜなのかについての私の唯一の推測は、関数呼び出しを別の式でネストする方が簡単で便利だということです。たとえば、次のようになります。
printf("%s\n", strcpy(dst, src));
このイディオムを正当化する他の合理的な理由はありますか?