原始檔通過編譯可以生成目標檔案(例如 gcc 下的 .o 和 visual studio 下的 .obj),並提供乙個標頭檔案向外暴露介面,除了保護版權,還可以將散亂的檔案打包,便於發布和使用。實際上我們一般不直接向使用者提供目標檔案,而是將多個相關的目標檔案打包成乙個靜態鏈結庫(static link library),例如 linux 下的 .a 和 windows 下的 .lib。打包靜態庫的過程很容易理解,就是將多個目標檔案**在一起形成乙個新的檔案,然後再加上一些索引,方便鏈結器找到,這和壓縮檔案的過程非常類似。c語言在發布的時候已經將標準庫打包到了靜態庫,並提供了相應的標頭檔案,例如 stdio.h、stdlib.h、string.h 等。linux 一般將靜態庫和標頭檔案放在/lib
和/user/lib
目錄下,c語言標準庫的名字是libc.a
,大家可以通過locate
命令來查詢它的路徑:
$ locate libc.a/usr/lib/x86_64-redhat-linux6e/lib64/libc.a$ locate stdio.h/usr/include/stdio.h/usr/include/bits/stdio.h/usr/include/c++/4.8.2/tr1/stdio.h/usr/lib/x86_64-redhat-linux6e/include/stdio.h/usr/lib/x86_64-redhat-linux6e/include/bits/stdio.h
在 windows 下,標準庫由 ide 攜帶,如果你使用的是 visual studio,那麼在安裝目錄下的\vc\include
資料夾中會看到很多標頭檔案,包括我們常用的 stdio.h、stdlib.h 等;在\vc\lib
資料夾中有很多 .lib 檔案,這就是鏈結器要用到的靜態庫。大家也可以在當前工程的屬性面板(在工程名處單擊滑鼠右鍵選擇「屬性」)中檢視路徑:
c語言共有兩套標準,也就是 ansi c 和 c99。ansi c 是較早的標準,各種編譯器都能很好的支援,c99 是後來的標準,編譯器對它的支援不盡相同,請大家閱讀《除了c標準庫,編譯器一般也會附帶自己的庫,以增加功能,方便使用者開發,爭奪市場份額。這些庫中的每乙個函式都在對應的標頭檔案中宣告,可以通過 #include 預處理命令匯入,編譯時會被合併到當前檔案。c語言的三套標準:c89、c99和c11
C語言標準
寫在前面 k r c不用說。個人以為,我們平常說的標準c,指的是ansi c,iso c,c89,c90。k r c ansi c和iso c c 的第乙個標準是由ansi發布的。雖然這份文件後來被國際標準化組織 iso 採納並且iso發布的修訂版也被ansi採納了,但名稱ansi c 而不是 is...
C語言標準
c語言標準 寫在前面 k r c不用說。個人以為,我們平常說的標準c,指的是ansi c,iso c,c89,c90。k r c 1978年,丹尼斯 里奇 dennis ritchie 和布萊恩 柯林漢 brian kernighan 合作出版了 c程式語言 的第一版。書中介紹的c語言標準也被c語言...
標準C語言
1 檔案相關 建立檔案 touch 檔名 原本是用來修改檔案屬性的,但如果檔案不存在 會自動把檔案建立出來。刪除檔案 rm 檔名 此命令刪除時不經過 站,檔案恢復困難。複製檔案 cp 原始檔 目標位置 在複製過程中可以修改檔名。移植檔案 mv 原始檔 目標位置 用法與cp基本一致,區別是cp原始檔還...