目錄
第一部分 基礎知識第1章 Linux環境下C語言的開發1.1 Linux下的C語言開發環境1.2 在Linux中使用C語言開發1.2.1 開發流程和開發工具 1.2.2 Linux中程式的執行原理第2章 嵌入式環境中的C語言開發2.1 嵌入式C語言的開發環境2.2 嵌入式開發中C語言程式設計要點第二部分 Linux環境中C語言的開發環境和工具第3章 Linux的文字編輯工具VI3.1 VI編輯器概述3.1.1 VI簡介3.1.2 VI的工作模式和使用之前的準備3.1.3 進入和退出VI3.2 VI的增強版VIM3.3 VI編輯器的基本使用方法3.3.1 在螢幕上移動游標3.3.2 插入文字3.3.3 刪除文字3.3.4 修改文字內容3.3.5 替換文字內容3.3.6 合併文字內容3.3.7 移動文字內容3.4 VI編輯器的指令和高階運算3.4.1 VI常用指令的列表3.4.2 VI的一些高階的操作和使用技巧第4章 GCC程式開發工具4.1 GNU工具綜述4.2 GCC的編譯和連結4.2.1 專案範例4.2.2 編譯、組譯和連結4.2.3 動態庫4.3 GCC的二進位工具4.3.1 ar(歸檔工具)4.3.2 readelf(讀取ELF格式檔資訊)4.3.3 strings(查看字串)4.3.4 nm(顯示符號資訊)4.3.5 strip(刪除符號)4.3.6 objdump(顯示目的檔資訊)4.3.7 objcopy(複製目的檔)第5章 make專案管理工具5.1 make和Makefile5.1.1 make機制概述5.1.2 make和Makefile的使用5.2 Makefile使用範例5.2.1 簡單的Makefile5.2.2 Makefile中的依賴關係5.2.3 Makefile中使用隱含規則來編譯程式5.2.4 Makefile中指定依賴關係的編譯5.3 自動產生Makefile5.3.1 自動產生Makefile的意義和相關工具5.3.2 自動產生Makefile的流程第6章 GDB除錯工具6.1 GDB簡介6.2 使用GDB除錯程式6.2.1 基本運算6.2.2 查看指令6.2.3 高階指令6.2.4 attach指令的使用6.3 遠端GDB除錯6.3.1 本地GDB除錯和遠端GDB除錯的比較6.3.2 遠端GDB除錯流程6.3.3 遠端GDB除錯範例第三部分 函數庫第7章 C語言標準函數庫7.1 ISO的C語言標準函數庫分類7.2 標準格式化輸入/輸出類函數7.2.1 scanf函數:格式化輸入字串7.2.2 printf函數:格式化輸出字串7.2.3 putchar函數:輸出字元到標準輸出7.2.4 getchar函數:從標準輸入擷取字元7.2.5 putc函數:向檔輸出字元7.2.6 etc函數:從檔輸入字元7.2.7 gets函數:獲得字串 7.2.8 puts函數:輸出指定字串7.2.9 ungetc函數:把字元寫回流中7.3 字元處理類函數7.4 字串處理及轉換函數7.4.1 sprintf函數:格式化輸出字串到一個緩衝區7.4.2 strcat和strncat函數:字元串連結7.4.3 strcpy和strncpy函數:字串複製7.4.4 strcmp和strncmp函數:字串比較7.4.5 strlen函數:擷取字串長度7.4.6 strchr和strrchr函數:字元/字串定位7.4.7 strstr函數:字串尋找7.4.8 strrev函數:字串逆序7.4.9 strupr和strlwr函數:字母形式轉換7.4.10 strdup和strndup函數:字串複製7.4.11 memset函數:記憶體設置7.4.12 memmove函數:記憶體移動7.4.13 memcmp函數:記憶體比較7.4.14 memcpy函數:記憶體複製7.5 數學計算類函數7.6 資料結構和演算法類函數7.6.1 bsearch函數:二元搜尋7.6.2 lfind函數:線性搜尋7.6.3 lsearch函數:線性搜尋7.6.4 qsort函數:利用快速排序法排列陣列7.6.5 rand函數:產生亂數 7.6.6 srand函數:設置亂數種子7.7 檔案I/O運算類相關函數7.7.1 fopen函數:打開檔案7.7.2 fclose函數:關閉檔案7.7.3 fgetc函數:從檔案中讀取一個字元7.7.4 fputc函數:將一指定字元寫入檔流中7.7.5 gets函數:從檔案中讀取一字串7.7.6 fputs函數:將一指定的字串寫入檔內7.7.7 rewind函數:重設檔流的讀寫位置為檔開頭7.7.8 ftell函數:取得檔流的讀取位置7.7.9 fseek函數:移動檔流的讀寫位置7.7.10 fwrite函數:將資料寫至檔流7.7.11 fread函數:從檔流讀取資料7.7.12 remove函數:刪除檔7.7.13 rename函數:更改檔案名稱或位置7.7.14 freopen函數:重新打開檔案7.7.15 fflush函數:同步緩衝區7.7.16 fgetpos函數:獲得檔案位置7.7.17 fsetpos函數:設置檔位置7.7.18 mktemp函數:建立暫存檔案7.7.19 tmpfile函數:暫存檔案7.7.20 tmpnam:得到暫存檔案名7.8 日期時間類函數7.8.1 clock函數:獲得CPU時間7.8.2 time函數:獲得當前日曆時間7.8.3 difftime函數:獲得時間差值7.8.4 gmtime函數:將日曆時間轉換成UTC時間7.8.5 mktime函數:將UTC時間轉換成日曆時間7.8.6 asctime函數:將UTC時間轉換成字串7.8.7 ctime函數:將日曆時間轉換成當地時間的字串7.8.8 localtime函數:將日曆時間轉換成本地時間7.8.9 strftime函數:轉換日期和時間格式7.9 國際化和本地化函數 7.9.1 setlocale函數:本地化控制函數7.9.2 localeconv函數:本地化轉換7.10 錯誤處理類函數7.10.1 clearerr函數:清除流中的結束指示符和錯誤指示符7.10.2 feof函數:指示檔結束7.10.3 error函數:指示檔出錯7.10.4 perror函數:輸出出錯資訊7.10.5 errno函數:錯誤編號記錄7.11 其他一些工具函數7.11.1 assert函數:程式診斷7.11.2 長跳躍函數7.11.3 可變長的參數控制函數217.11.4 擷取結構體成員函數(巨集)7.12 一些標準庫中有用的巨集第8章 Linux中C語言的擴充函數庫268.1 檔案I/O運算函數8.1.1 open函數:打開檔案 8.1.2 close函數:關閉檔案8.1.3 read函數:讀檔案8.1.4 write函數:寫檔案8.1.5 lseek函數:檔案定位8.1.6 ioctl函數:檔案控制8.1.7 flock函數:鎖定檔案8.1.8 mmap函數和munmap函數:記憶體映射8.1.9 create函數:建立新檔案8.1.10 dup函數和dup2函數:複製檔描述元8.1.11 fcntl函數:改變已打開的檔的屬性8.2 檔許可權相關的操作函數8.2.1 access函數:判斷是否具有存取檔的許可權8.2.2 chown函數和fchown函數:改變檔的所有者8.2.3 chmod函數和fchmod函數:改變許可權8.2.4 unlink函數:刪除檔8.2.5 utime函數和utimes函數:改變檔時間8.2.6 umask函數:設置建立新檔案時的許可權遮罩8.2.7 link函數:建立檔案連結8.2.8 stat函數、fstat函數和lstat函數:擷取檔資訊8.3 使用者群組運算函數8.3.1 getgid函數和setgid函數:獲得/設置群組識別碼8.3.2 getegid函數和setegid函數:獲得/設置有效的組識別碼8.3.3 getuid函數和setuid函數:獲得/設置真實的使用者識別8.3.4 geteuid函數和seteuid函數:獲得/設置有效的使用者識別碼8.3.5 getgroups函數和setgroups函數:獲得/設置群組程式碼8.4 信號類函數8.4.1 kill函數:傳送信號給指定的行程8.4.2 raise函數:信號發送函數8.4.3 alarm函數:設置超時函數8.4.4 signal函數:信號安裝函數8.5 行程處理函數8.5.1 getpid函數和getppid函數:獲得行程ID和父行程ID8.5.2 fork函數:建立子行程8.5.3 sleep函數和usleep函數:讓行程暫停執行一段時間8.5.4 exec函數族:找到可執行檔8.5.5 _exit函數和_Exit函數:結束行程執行第四部分 C語言高階程式設計第9章 動態記憶體的堆積與堆疊9.1 程式記憶體區域的使用9.1.1 靜態記憶體與動態記憶體9.1.2 C語言中的動態記憶體9.2 C程式中堆疊空間的使用9.2.1 參數使用堆疊空間9.2.2 自動變數使用堆疊空間9.2.3 程式中較大的堆疊9.2.4 堆疊空間的特性9.3 C程式中的堆積空間使用9.3.1 分配和釋放堆積記憶體的函數庫9.3.2 函數庫使用9.3.3 堆積記憶體的特性9.4 堆積記憶體和堆疊記憶體使用的比較069.4.1 利用返回值傳遞資訊 9.4.2 利用參數傳遞資訊9.4.3 堆積與堆疊記憶體管理的區別第10章 函數指標的使用10.1 函數指標的概念10.1.1 C語言函數的本質10.1.2 函數指標在C語言中的意義10.2 函數指標的使用10.2.1 函數指標使用初步10.2.2 函數指標的類型定義 10.2.3 函數指標作為結構體成員10.2.4 函數指標作為函數的參數10.2.5 函數指標作為函數的返回值10.2.6 函數指標陣列10.3 函數指標使用範例第11章 回呼函數的使用11.1 回呼函數的概念與作用11.1.1 程式呼叫的方式11.1.2 回呼函數的作用11.2 回呼函數的語法11.2.1 簡單的回呼函數11.2.2 完全形式的回呼函數11.3 回呼函數的使用11.3.1 qsort中的回呼函數11.3.2 atexit和on_exit函數的註冊退出函數第12章 C語言實現物件程式設計12.1 C語言實現基於物件程式設計的概念與作用12.2 C語言基於物件程式設計實現封裝12.2.1 簡單的程式範例12.2.2 C語言基於物件程式設計的詳解12.2.3 C語言基於物件程式設計與C++物件導向程式設計的比較12.3 C語言基於物件程式設計實現部分繼承功能12.3.1 利用資料結構的包含實現繼承功能12.3.2 利用私有指標實現繼承功能12.3.3 C語言實現繼承的總結12.4 C語言基於物件程式設計實現部分多態功能12.4.1 利用運算指標群組的包含實現多態功能12.4.2 C語言實現多態功能的總結12.5 對C語言實現基於物件程式設計的思考12.5.1 C語言基於物件程式設計的特性12.5.2 C語言基於物件程式設計中介面、實現和呼叫者的關係第五部分 在嵌入式環境下的C語言程式設計第13章 C語言程式的記憶體佈局13.1 C語言程式的儲存區域13.2 C語言程式的段13.2.1 段的分類13.2.2 程式中段的使用13.3 可執行程式的連結13.3.1 可執行程式的組成13.3.2 各個目的檔的關係13.3.3 連結錯誤範例13.4 C語言程式的執行13.4.1 RAM除錯執行13.4.2 固化程式的XIP執行13.4.3 固化程式的載入執行13.4.4 C語言程式的執行總結第14章 嵌入式C語言常用語法14.1 記憶體指標運算14.1.1 記憶體運算的意義14.1.2 使用指標運算記憶體14.1.3 volatile的使用14.1.4 嵌入式系統指標的實際應用14.2 位元運算14.2.1 位元運算的意義14.2.2 位元運算的語法14.3 大或小位元組在前排列法與對齊問題14.3.1 大或小位元組在前排列法問題14.3.2 記憶體對齊問題14.3.3 結構體成員的對齊問題14.4 程式的跳躍14.4.1 嵌入式系統程式跳躍的類型14.4.2 C語言中實現程式的跳躍第15章 嵌入式C語言程式設計的技巧15.1 程式的最佳化技巧15.1.1 迴圈緩衝區15.1.2 查表法15.1.3 針對迴圈執行效率的最佳化15.2 關於小數點運算15.3 函數參數和返回值的傳遞15.4 變數的初始化技巧15.4.1 陣列的初始化15.4.2 結構體的初始化15.4.3 變數的初始化總結15.5 程式的除錯和巨集使用的技巧15.5.1 列印檔、函數和程式列15.5.2 #:字串化運算子15.5.3 ##:連結運算子15.5.4 除錯巨集的第一種定義方式15.5.5 除錯巨集的第二種定義方式15.5.6 對除錯程式碼進行分級審查15.5.7 條件編譯除錯程式碼15.5.8 使用do…while的巨集定義15.6 程式碼剖析
第一部分 基礎知識第1章 Linux環境下C語言的開發1.1 Linux下的C語言開發環境1.2 在Linux中使用C語言開發1.2.1 開發流程和開發工具 1.2.2 Linux中程式的執行原理第2章 嵌入式環境中的C語言開發2.1 嵌入式C語言的開發環境2.2 嵌入式開發中C語言程式設計要點第二部分 Linux環境中C語言的開發環境和工具第3章 Linux的文字編輯工具VI3.1 VI編輯器概述3.1.1 VI簡介3.1.2 VI的工作模式和使用之前的準備3.1.3 進入和退出VI3.2 VI的增強版VIM3.3 VI編輯器的基本使用方法3.3.1 在螢幕上移動游標3.3.2 插入文字3.3.3 刪除文字3.3.4 修改文字內容3.3.5...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。