基本的なCライブラリ関数(、など)のソース/データベースはありますstrcmp
かmemset
?
基本的なCライブラリ関数を実装したいのですが、正しく実行されているかどうかを確認できません。
いくつかのソースコードデータベースを見つけましたが、それらは本来よりもはるかに複雑です(たとえば、の実装はstrcpy
30行を超えており、その半分は文字列のコピーに関連していないと思います)。
「基本的な」Cライブラリ関数も、プログラムのパフォーマンスと正確さにとって最も重要なもののいくつかであるため、いくつかの複雑な実装を持つ傾向があります。
Newlibのコードを確認することをお勧めします。これは組み込みシステム向けの基本的なCライブラリであり(テレビでも実行できる可能性があります)、Cygwinでも使用されます。ライセンスはまた、あなた自身の目的のための「借用」ソースとほとんど互換性がありますが、それのいくつかのビット(いくつかのファイル)はGPLであるため注意してください。
OpenBSDCライブラリをチェックしてください。たとえば、これがその基本strcpy
です:
char *
strcpy(char *to, const char *from)
{
char *save = to;
for (; (*to = *from) != '\0'; ++from, ++to);
return(save);
}
関数のドキュメントは、マンページの形式で含まれています。
(通常はアセンブラーで、一般的なルーチンの最適化されたバージョンも伝送するため、Cバージョンは実際にはリファレンス実装と見なす必要があります。)
PJPlaugerのすばらしい本TheStandardCLibraryがあります。少し古い(1992)ですが、libcを実装して正しく実行したい場合は、それでも貴重なリソースです。ライブラリへの完全なコードが含まれています。musllibcもあります。コードはgitリポジトリにあります。実装は単純ではありませんが、他の実装と比較すると、非常に小さくシンプルです。そして、他の誰かがすでに述べたように、C標準はあなたが見たいものです。