This book is divided into three parts. The first part describesthe C language in the strict sense of the term; the second partdescribes the standard library; and the third part describes the processof compiling and testing programs with the popular tools in the GNUsoftware collection.
Part I
.
Describes the characteristics of the language and how Cprograms are structured and compiled. This chapter introducesbasic concepts such as the translation unit, character sets, andidentifiers.
Provides an overview of types in C and describes the basictypes, the type void
, andenumerated types.
Describes numeric constants, character constants, andstring literals, including escape sequences.
Describes implicit and explicit type conversions,including integer promotion and the usual arithmeticconversions.
Describes the evaluation of expressions, all theoperators, and their compatible operands.
Describes C statements such as blocks, loops, andjumps.
Describes function definitions and function calls,including recursive and inline functions.
Describes fixed-length and variable-length arrays,including strings, array initialization, and multidimensionalarrays.
Describes the definition and use of pointers to objectsand functions.
Describes the organization of data in these user-definedderived types.
Describes the general syntax of a declaration, identifierlinkage, and the storage duration of objects.
Describes the standard librarys dynamic memory managementfunctions, illustrating their use in a sample implementation ofa generalized binary tree.
Describes the C concept of input and output, with anoverview of the use of the standard I/O library.
Describes the use of the C11 multithreading features, including atomic operations, communication between threads, and thread-specific storage.
Describes the definition and use of macros, conditionalcompiling, and all the other preprocessor directives andoperators.
Part II
, is devoted to the C standard library. It providesan overview of standard headers and also contains a detailed function reference.
Describes contents of the headers and their use. Theheaders contain all of the standard librarys macros and typedefinitions.
Provides an overview of the standard library functions,organized by areas of application (e.g., mathematicalfunctions, date and time functions, etc.).
Describes each standard library function in detail, inalphabetical order, and contains examples to illustrate the useof each function.
Part III
The third part of this book, which includes Chapters , provides the necessary knowledge ofthe C programmers basic tools: the compiler, the make utility, and the debugger. The toolsdescribed here are those in the GNU software collection. Finally, the use of these tools in an integrated development environment (IDE) for C is described using the Eclipse IDE as an example.
Describes the principal capabilities that the widely usedcompiler offers for C programmers.
Describes how to use the make program to automate thecompiling process for large programs.
Describes how to run a program under the control of theGNU debugger and how to analyze programs runtime behavior tofind logical errors.
Describes the use of an integrated development environment (IDE) for unified, convienient access to all the tools for developing C programs.
Further Reading
In addition to works mentioned at appropriate points in the text,there are a number of resources for readers who want more technicaldetail than even this book can provide. The international working groupon C standardization has an official home page at http://www.open-std.org/jtc1/sc22/wg14, with links to thelatest version of the C standard and current projects of the workinggroup.
For readers who are interested in not only thewhat and how of C, but alsothe why, the WG14 site also offers links to some of its drafts and rationales. These documents describe some of the motivations and constraints involved in the standardization process. Furthermore,for those who may wonder how C got to be that way in the first place,the originator of C, the late Dennis Ritchie, wrote an article titled TheDevelopment of the C Language. This and other historical documents are still available onhis Bell Labs website,