[英]How can I check if I implement C library functions correctly?
是否有基本 C 庫函數(如strcmp
、 memset
等)的源/數據庫?
我想實現基本的 C 庫函數,但我無法驗證我是否做得對。
我找到了幾個源代碼數據庫,但它們比應有的復雜得多(例如, strcpy
的實現超過 30 行,其中一半與復制字符串無關,我認為)。
“基本”C 庫函數對於程序性能和正確性也是最重要的,因此往往有一些復雜的實現。
我建議您查看Newlib的代碼。 它是一個用於嵌入式系統的基本 C 庫(您的電視可能會運行它),它也用於 Cygwin。 該許可證也主要與出於您自己目的的“借用”源兼容,但要小心,因為其中的某些部分(某些文件)是 GPL。
查看OpenBSD C 庫。 例如,這是它的基本strcpy
:
char *
strcpy(char *to, const char *from)
{
char *save = to;
for (; (*to = *from) != '\0'; ++from, ++to);
return(save);
}
這些函數的文檔以聯機幫助頁的形式包含在內。
(它還帶有常用例程的優化版本,通常在匯編程序中,因此 C 版本確實應該被視為參考實現。)
PJ Plauger 有一本很棒的書The Standard C Library 。 它有點過時(1992 年),但如果您想實現 libc 並正確執行,它仍然是寶貴的資源。 它包含庫的完整代碼。 還有musl libc 。 代碼位於 git repo 中。 實現並不簡單,但如果我將它與其他實現進行比較,它確實小而簡單。 正如其他人已經提到的,C 標准是您想要查看的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.