作 者:(美)本·克萊蒙(Ben Klemens) 著;趙岩 譯 著
定 價:79
出 版 社:人民郵電出版社
出版日期:2018年01月01日
頁 數:354
裝 幀:平裝
ISBN:9787115460950
●第1部分開發環境
第1章準備方便的編譯環境3
1.1使用包管理工具4
1.2 在Windows下編譯C程序6
1.2.1Windows中的 IX環境7
1.2.2在 IX環境中編譯C語言8
1.2.3在非 IX環境中編譯C語言9
1.3鏈接函數庫的方式10
1.3.1一些我喜歡的選項12
1.3.2路徑13
1.3.3運行時連接16
1.4使用makefile16
1.4.1設定變量17
1.4.2規則20
1.5以源文件的方式使用庫24
1.6以源文件的方式使用庫(即使你的繫統管理員不想叫你這麼做)25
1.7通過here來編譯C程序27
1.7.1在命令行裡包含頭文件27
1.7.2統一的頭文件28
1.7.3here文檔29
1.7.4從stdin中編譯30
第2章調試、測試和文檔32
2.1使用調試器32
2.1.1調試的偵探故事34
2.1.2GDB變量43
2.1.3打印結構45
2.2利用Valgrind檢查錯誤49
2測試51
2.3.1把程序用作庫54
2.3.2測試覆蓋55
2.4錯誤檢查56
2.4.1在錯誤中的用戶的角色?56
2.4.2用戶工作的上下文環境58
2.4.3如何返回錯誤信息60
2.5編制文檔60
2.5.1Doxygen61
2.5.2用CWEB解釋代碼62
第3章打包項目65
3.1shell66
3.1.1用shell命令的輸出來替換命令66
3.1.2用shell的循環來處理一組文件68
3.1.3針對文件的測試70
3.1.4fc73
3.2makefile還是shell腳本75
3.3用Autotools打包代碼77
3.3.1一個Autotools的示例79
3.3.2用makefile.am來描述makefile82
3.3.3配置腳本87
第4章版本控制92
4.1通過diff查看差異93
4.2Git的對像94
4.3樹和它們的分支99
4.3.1融合100
4.3.2遷移102
4.4遠程版本庫103
第5章協助開發106
5.1動態裝載106
5.2流程109
5.2.1為外來語言寫程序110
5.2.2包裝函數110
5.2.3跨越邊境的代理數據結構111
5.2.4鏈接112
5.3與Python一起工作113
5.3.1編譯與連接114
5.3.2Automake的條件子目錄114
5.3.3Autotools支持下的Distutils116
第2部分語言
第6章玩轉指針121
6.1自動、靜態和手工內存121
6.2持久性的狀態變量125
6.3不使用malloc的指針127
6.3.1結構被復制,數組創建別名129
6.3.2malloc和內存操縱132
6.3.3錯誤來源於星號133
6.3.4你需要知道的各種指針運算134
6.3.5將typedef作為一種教學工具137
第7章教科書不應該再過多介紹的C語言語法139
7.1不需要明確地從main函數返回139
7.2讓聲明的位置更靈活140
7.3減少類型轉換143
7.4枚舉和字符串145
7.5標簽、goto、switch和break147
7.5.1探討goto147
7.5.2switch150
7.6被摒棄的float151
7.7比較無符號整型數154
7.8安全的將字符串解析成數字154
第8章那些C語言教科書經常不講解的語法158
8.1營造健壯和繁盛的宏158
8.1.1預處理器技巧162
8.1.2測試宏166
8.1.3避免頭文件重復包含168
8.2static和extern鏈接170
8.3const關鍵字173
8.3.1名詞-形容詞形式174
8.3.2壓力175
8.3.3深度176
8.3.4charconst**問題177
第9章簡單的文本處理180
9.1使用asprintf,使字符串的處理不再那麼痛苦180
9.1.1安全183
9.1.2常量字符串184
9.1.3用asprintf擴展字符串185
9.1.4strtok的贊歌187
9.2Unicode192
9.2.1C代碼的編碼194
9.2.2Unicode函數庫195
9.2.3示例代碼196
第10章更好的結構200
10.1復合常量201
10.2可變參數宏202
10.3安全終止的列表204
10.4多列表205
10.5Foreach206
10.6函數的向量化207
10.7指定的初始化器209
10.8用零初始化數組和結構211
10.9typedef可以化繁為簡212
10.10從函數返回多個數據項214
10.11靈活的函數輸入218
10.11.1把函數聲明為printf風格219
10.11.2可選參數和命名參數221
10.11.3使無聊的函數煥發光彩223
10.12void指針以及它所指向的結構229
10.12.1具有通用輸入的函數229
10.12.2通用結構234
第11章C語言面向對像編程240
11.1擴展結構和字典241
11.1.1實現一個字典243
11.1.2C,更少的縫隙247
11.2你結構中的函數253
11.3作用域261
11.4用操作符重載進行重載264
11.5引用計數268
11.5.1示例:一個子字符串對像268
11.5.2一個基於代理的組構造模型273
11.5.3結論280
第12章多線程281
12.1環境282
12.2OpenMP283
12.2.1編譯OpenMP、pthreads和C原子(atom)286
12.2.2衝突287
12.2.3映射縮減288
12.2.4多任務289
12.3線程本地290
12.4共享資源292
12.5pthread299
12.6C原子304
第13章函數庫311
13.1GLib311
13.2 IX312
13.2.1解析正則表達式312
13.2.2為巨大的數據集合使用mmap317
13.3GNU科學計算庫320
13.4SQLite322
13.5libxml和cURL325
附錄AC101329
後記348
術語表349
C語言已經有幾十年的歷史了。經過長時間的發展和普及,C語言的應用場景有了很大的變化,一些舊觀念應該被淡化或者不再被推薦。本書展現了傳統C語言教科書所不具有相關技術。全書分為開發環境和語言兩個部分,從編譯、調試、測試、打包、版本控制等角度,以及指針、語法、文本、結構、面向對像編程、函數庫等方面,對C程序設計的核心知識進行查缺補漏和反思。本書鼓勵讀者放棄那些對大型機纔有意義的舊習慣,拿起新的工具來使用這門與時俱進的簡潔語言。本書適合有一定基礎的C程序員和C語言學習者閱讀,也適合想要深入理解C語言特性的讀者參考。
(美)本·克萊蒙(Ben Klemens) 著;趙岩 譯 著
本·克萊蒙,自從於加州理工學院獲得社會科學博士後,Ben Klemens就一直從事統計分析和人口的計算機輔助建模工作。他的觀點是,寫代碼一定應該是趣味橫生的,並先後非常愉快地為布魯金斯學會、世界銀行、美國國家精神健康中心等機構寫過分析和建模代碼(主要是C代碼)。他作為布魯金斯學會的非常駐研究員,與自由軟件基金會一道,做了很多工作來確保有創意的程序員擁有保留其作品使用權的權利。他目前為美國聯邦政府工作。