这不是一本教你怎么写C的书,而是一本带你'考古'C语言的书。作者Peter van der Linden本身是编译器开发者,他把那些让人抓狂的细节——const到底修饰谁、数组和指针为何常被混为一谈、为什么'数组就是地址、指针就是地址的地址'——一一追溯到标准制定时的历史成因。读者最津津乐道的,正是这种'八卦'式的讲法:那些看似怪异的规定,其实是当年妥协与笔误的产物(比如K&R第二版把一句关键说明活生生拆到了两页)。读完你会获得一种'原来如此'的通透感,而非又一份语法速查表。它适合已具备C基础、渴望理解'为什么这么规定'的程序员;若你只想要技巧清单,或许会觉得它太'摇滚'。
"当内核检测到“不会出现”的情况时,他就会“惊慌失措”,引起突然停止。…… 为解决内核的“惊慌”问题,首先必须考虑有哪些事情有可能吓坏操作系统。 Sun 的内核开发小组有一个很隐蔽的 Bug,非常难以发现。其症状是内核的内存偶尔会被覆盖,这会使操作系统“惊慌”。"
"对编译器而言,一个数组就是一个地址,一个指针就是一个地址的地址。你应该根据情况做出选择。 …… 为什么人们会错误地认为数组和指针是可以完全互换的呢?这是因为他们阅读了标准的参考文献! The C Programming Language,第二版,Kernihan & Ritchie,第 99 页的底部是: As format parameters in a function definition, 然后翻到第 100 页,紧接前句: char s[]; and char s*; are equivalent... 呜呼!真是不幸,这么重要的一句话竟然在 K&R 第二版中被分印在了两页上!人们在"