||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: C, C99, C89, C++, C run-time libraries
Title: C - A Reference Manual
Authors: Samuel P. Harbison III and Guy L. Steel Jr
Publisher: Prentice Hall
Level: Intermediate and advanced C programmers
Verdict: An essential reference book
C remains the language of choice for getting close to the metal. Whether it's for developing device drivers, operating systems or merely boosting a Java application with some hand-crafted JNI code, C is the only serious game in town. However, it's core strength is also a weakness. Being so closely related to the hardware means that changing processor, operating system or compiler is often not a trivial task. Add to this the various C standards, different run-time libraries and you have a recipe for complications that your volume of Kernighan and Ritchie can't get you out of.Thankfully, C - A Reference Manual exists to help you make your code maintainable and easy to port across platforms and tools. This is a book that does exactly what it says on the cover - it provides a reference manual for C programmers. What it does not do is provide an introduction to the language, it's not a tutorial or a how-to-program book. This is a book that is firmly aimed at the experienced C coder rather than the beginner or occasional dabbler. A good deal of the text is given over to the different C standards, with a clear differentiation between traditional C (which the authors define as the language mostly used before 1990), C89 and C99. Furthermore the question of writing code that is compatible with C++ is also covered in some detail. In all cases the authors aim to provide the maximum amount of information so that the reader can write code that is as clean and as standard as possible. The first part of the book covers the language in some depth - including detailed descriptions of data types, type conversions, expressions, statements etc. The material is complex, detailed and occasionally terse, which is just as you would expect in a reference book. The second part of the book is likely to provide the greatest day-to-day use in that it provides full and detailed descriptions of the standard C libraries. These are cleanly categorised by type of function: string processing, character processing, memory functions, math functions and so on. These functions are also cross referenced and the text makes clear differences between the C standards that apply. To conclude, if you're a C developer and this isn't part of your armoury it ought to be.