|
內容摘要
作者以自己1985年在Bell實(shí)驗室時(shí)發(fā)表的一篇論文為基礎,結合自己的工作經(jīng)驗擴展成為這本對C程序員具有珍貴價(jià)值的經(jīng)典著(zhù)作。寫(xiě)作本書(shū)的出發(fā)點(diǎn)不是要批判C語(yǔ)言,而是要幫助C程序員繞過(guò)編程過(guò)程中的陷阱和障礙。
全書(shū)分為8章,分別從詞法分析、語(yǔ)法語(yǔ)義、連接、庫函數、預處理器、可移植性缺陷等幾個(gè)方面分析了C語(yǔ)言編程中可能遇到的問(wèn)題。最后,作者用一章的篇幅給出了若干具有實(shí)用價(jià)值的建議。
本書(shū)適合有一定經(jīng)驗的C程序員閱讀學(xué)習,即便你是做嵌入式開(kāi)發(fā)C編程高手,本書(shū)也應該成為你的案頭必備書(shū)籍。
目錄
第0章導讀
第1章詞法“陷阱”
1.1=不同于==
1.2&和|不同于&&和||
1.3詞法分析中的“貪心法”
1.4整型常量
1.5字符與字符串
第2章語(yǔ)法“陷阱”
2.1理解函數聲明
2.2運算符的優(yōu)先級問(wèn)題
2.3注意作為語(yǔ)句結束標志的分號
2.4switch語(yǔ)句
2.5函數調用
2.6“懸掛”else引發(fā)的問(wèn)題
第3章語(yǔ)義“陷阱”
3.1指針與數組
3.2非數組的指針
3.3作為參數的數組聲明
3.4避免“舉隅法”
3.5空指針并非空字符串
3.6邊界計算與不對稱(chēng)邊界
3.7求值順序
3.8運算符&&、||和!
3.9整數溢出
3.10為函數main提供返回值
第4章連接
4.1什么是連接器
4.2聲明與定義
4.3命名沖突與static修飾符
4.4形參、實(shí)參與返回值
4.5檢查外部類(lèi)型
4.6頭文件
第5章庫函數
5.1返回整數的getchar函數
5.2更新順序文件
5.3緩沖輸出與內存分配
5.4使用ernlo檢測錯誤
5.5庫函數signal
第6章預處理器
6.1不能忽視宏定義中的空格
6.2宏并不是函數
6.3宏并不是語(yǔ)句
6.4宏并不是類(lèi)型定義
第7章可移植性缺陷
7.1應對C語(yǔ)言標準變更
7.2標識符名稱(chēng)的限制
7.3整數的大小
7.4字符是有符號整數還是無(wú)符號整數
7.5移位運算符
7.6內存位置0
7.7除法運算時(shí)發(fā)生的截斷
7.8隨機數的大小
7.9大小寫(xiě)轉換
7.10首先釋放,然后重新分配
7.11可移植性問(wèn)題的一個(gè)例子
第8章建議與答案
8.1建議
8.2答案
附錄A:PRINTF,VARARGS與STDARG
附錄B:Koenig和Moo夫婦訪(fǎng)談