
C Traps and Pitfalls
Andrew Koenig(Author)
Addison Wesley (Publisher)
Published on 1. January 1989
Book
Paperback/Softback
160 pages
978-0-201-17928-6 (ISBN)
Description
Even C experts come across problems that require days ofdebugging to fix. This book helps to prevent such problems byshowing how C programmers get themselves into trouble. Each ofthe book's many examples has trapped a professional programmer. In addition to its examples, C Traps and Pitfalls offers adviceon: *avoiding off-by-one errors *understanding and constructing function declarations *understanding the subtle relationship between pointers andarrays Distilled from the author's experience over a decade ofprogramming in C, this book is an ideal resource for anyone,novice or expert, who has ever written a C program. 0201179288B04062001
More details
Language
English
Place of publication
Boston
United States
Publishing group
Pearson Education (US)
Target group
College/higher education
Dimensions
Height: 233 mm
Width: 158 mm
Thickness: 9 mm
Weight
240 gr
ISBN-13
978-0-201-17928-6 (9780201179286)
Schweitzer Classification
Person
Andrew Koenig is a member of the Large-Scale Programming Research Department at AT&T's Shannon Laboratory, and the Project Editor of the C++ standards committee. A programmer for more than 30 years, 15 of them in C++, he has published more than 150 articles about C++, and speaks on the topic worldwide.
0201179288AB04062001
0201179288AB04062001
Content
Introduction.
1. Lexical Pitfalls.
= is not ==
& and | are not && or ||
Greedy lexical analysis.
Integer constants.
Strings and characters.
2. Syntactic pitfalls.
Understanding function declarations.
Operators don't always have the precedence you want.
Watch those semicolons!
The switch statement.
Calling functions.
The dangling else problem.
3. Semantic pitfalls.
Pointers and arrays.
Pointers are not arrays.
Array declarations as parameters.
Eschew synecdoche.
Null pointers are not null strings.
Counting and asymmetric bounds.
Order of evaluation.
The &&, ||, and ! operators.
Integer overflow.
Returning a value from main.
4. Linkage.
What is a linker?
Declarations vs. definitions.
Name conflicts and the static modifier.
Arguments, parameters, and return values.
Checking external types.
Header files.
5. Library functions.
Getchar returns an integer.
Updating a sequential file.
Buffered output and memory allocation.
Using errno for error detection.
The signal function.
6. The preprocessor.
Spaces matter in macro definitions.
Macros are not functions.
Macros are not statements.
Macros are not type definitions.
7. Portability pitfalls.
Coping with change.
What's in a name?
How big is an integer?
Are characters signed or unsigned?
Shift operators.
Memory location zero.
How does division truncate?
How big is a random number?
Case conversion.
Free first, then reallocate?
An example of portability problems.
8. Advice and answers.
Advice.
Answers.
Appendix: printf, varargs, and stdarg.
The printf family.
Simple format types.
Modifiers.
Flags.
Variable field width and precision.
Neologisms.
Anachronisms.
Variable argument lists with varargs.h.
Implementing varargs.h.
stdarg.h: the ANSI varargs.h. 0201179288T04062001
1. Lexical Pitfalls.
= is not ==
& and | are not && or ||
Greedy lexical analysis.
Integer constants.
Strings and characters.
2. Syntactic pitfalls.
Understanding function declarations.
Operators don't always have the precedence you want.
Watch those semicolons!
The switch statement.
Calling functions.
The dangling else problem.
3. Semantic pitfalls.
Pointers and arrays.
Pointers are not arrays.
Array declarations as parameters.
Eschew synecdoche.
Null pointers are not null strings.
Counting and asymmetric bounds.
Order of evaluation.
The &&, ||, and ! operators.
Integer overflow.
Returning a value from main.
4. Linkage.
What is a linker?
Declarations vs. definitions.
Name conflicts and the static modifier.
Arguments, parameters, and return values.
Checking external types.
Header files.
5. Library functions.
Getchar returns an integer.
Updating a sequential file.
Buffered output and memory allocation.
Using errno for error detection.
The signal function.
6. The preprocessor.
Spaces matter in macro definitions.
Macros are not functions.
Macros are not statements.
Macros are not type definitions.
7. Portability pitfalls.
Coping with change.
What's in a name?
How big is an integer?
Are characters signed or unsigned?
Shift operators.
Memory location zero.
How does division truncate?
How big is a random number?
Case conversion.
Free first, then reallocate?
An example of portability problems.
8. Advice and answers.
Advice.
Answers.
Appendix: printf, varargs, and stdarg.
The printf family.
Simple format types.
Modifiers.
Flags.
Variable field width and precision.
Neologisms.
Anachronisms.
Variable argument lists with varargs.h.
Implementing varargs.h.
stdarg.h: the ANSI varargs.h. 0201179288T04062001