David Griffiths

Author of Head First C

We may earn commissions for purchases made via this page

Book Recommendations:

Recommended by David Griffiths

'Fluent C' is an excellent introduction to C design patterns. There are many issues any professional C developer will encounter: how can memory be used efficiently? How can data structures be processed? How can error cases be trapped and logged? 'Fluent C' will show you how to handle these and many other problems step-by-step. More than that, it will show you how an experienced C developer will examine and solve problems. You will see how real-world projects have tackled complex issues, with detailed information about large open source projects. You will see how C professionals: Structure their code and manage their source files, how they avoid "#ifdef hell" by simplifying their preprocessor instructions, and how C design patterns provide a powerful shared language that C teams can use to design production quality code. 'Fluent C' assumes a foundational knowledge of the C language and, for new developers, is best paired with an introductory C text. It's a book worthy of space on any professional C developer's bookshelf. Recommended. (from Amazon)

Expert advice on C programming is hard to find. While much help is available for object-oriented programming languages, there's surprisingly little for the C language. With this hands-on guide, beginners and experienced C programmers alike will find guidance about design decisions, including how to apply them bit by bit to running code examples when building large-scale programs. Christopher Preschern, a leading member of the design patterns community, answers questions such as how to structure C programs, cope with error handling, or design flexible interfaces. Whether you're looking for one particular pattern or an overview of design options for a specific topic, this book shows you how to implement hands-on design knowledge specifically for the C programming language. You'll find design patterns for: Error handling Returning error information Memory management Returning data from C functions Data lifetime and ownership Flexible APIs Flexible iterator interfaces Organizing files in modular programs Escaping #ifdef Hell