REVIEW - Jamsa's C/C++ Programmer's Bible - The Ultimate Guide to C/C++ Programming


Jamsa's C/C++ Programmer's Bible

The Ultimate Guide to C/C++ Programming


Kris A. Jamsa, Lars Klander



Singular (1998)




Francis Glassborow


August 1998



This is a massive tome that attempts to cover a vast amount of ground. Were it substantially accurate it would be a worthy addition to any programmer's bookshelf. Unfortunately one of the consequences of running a press to publish your own work is that you may not always do the work required to move a manuscript from a working draft to a polished product.

The lead author of this book established a sufficient reputation with his early work to attract other publishers into handling the distribution of his company's books. On the evidence of this book they should reconsider.

The authors seem to be confused about their aims. Many of the tips are system dependent (and only a substantial understanding of different OSs will give the reader any sense of which tips are relevant to the system on which they are working.) Much worse, many of the tips that are not ill conceived to start with are plain wrong. Of course anyone who thinks that a copy of Turbo C++ Lite is going to be much use with a book that purports to cover Windows programming, the STL and multi-threading is obviously expecting more than can be reasonably delivered. Let me give you a few examples.

'464 Passing Arrays on the Stack' does not actually tell you how to do this should you wish to. It is just a very brief item that effectively says that you pass the address of the first element of the array.

The immediately preceding tip refers to the

character. That should be
. OK you may think I am being picky, but the work is littered with errors. Some of them are almost laughable. I have no idea where the authors arrive at 'The Julian calendar is identical to the Gregorian calendar, except that it commences year one at the Gregorian-equivalent 46 BC.' And the authors do not seem to know what a Julian day is (it has nothing to do with a Julian date.) Here is another example: 'Tip 173 Determining Whether Two Strings are the Same' provides you with a function to compare two strings character by character. See how many errors you can spot:

int streql(char *str1, char *str2) { 	while ((*str1 == *str2)&& (*str1))  { 		str1++; 		str2++; 	} 	return((*str1 == NULL)&& (*str2 == NULL)); }
On second thoughts why bother? Either compare the addresses if you want to answer the question as phrased, or use
if you want to see if they match. Any author who can provide you with a function that includes blatant undefined behaviour when there is a perfectly good library function does not deserve to be taken seriously. I was going to suggest you use this book as a door stop, but if you have a copy take it back to the seller and demand (courteously) a refund of your money. The book does not match its cover description and using it would be positively dangerous to your professional reputation.

Book cover image courtesy of Open Library.

Your Privacy

By clicking "Accept All Cookies" you agree ACCU can store cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

By clicking "Share IP Address" you agree ACCU can forward your IP address to third-party sites to enhance the information presented on the site, and that these sites may store cookies on your device.