嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 3 元微信扫码支付:3 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
C traps and pitfalls by Andrew Koenig
CONTENTS
o In trod ueti 0 n ;.1
1 Lexi eal pi tf aIls .............................................................•..................................... 5
1.1 = is not == 6
1.2 & and : are not && or : : 7
1.3 Greedy lexical analysis 7
1.4 Integer constants 9
1.5 Strings and characters l0
2 SYnta et ie pi tf alls 13
2.1 Understanding function declarations 13
2.2 Operators don't always have the precedence you want.. 17
2.3 Watch those semicolons! 20
2.4 The switch statement 22
2.5 Calling functions : 24
2.6 The dangling else problem 24
3 Se man tic pi tf aIls , 27
3.1 Pointers and arrays 27
3.2 Pointers are not arrays 32
3.3 Array declarations as parameters 33
3.4 Eschew synecdoche 34
3.5 Null pointers are not null strings 35
3.6 Counting and asymmetric bounds 36
3.7 Order of evaluation 46
3.8 The &&, l :, and ! operators ..48
3.9 Integer overflow : 49
3.10 Returning a value from main : 50
ix
x C TRAPS AND PITFALLS
CONTENTS
4 Linkage .....................•............................................................... ; 53
4;1 What is a linker? ; 53
4.2 Declarations vs. definitions; 54
4.3 Name conflicts and the static modifier 56
4.4 Arguments, parameters, and return values .57
4.5 Checking external types 63
4.6 Header files : 66
5 Library fun eli 0 ns ; ; 69
5.1 getchar returns an integer 70
5.2 Updating a sequential file : 70
5.3 Buffered output and memory allocation 72
5.4 Using errno for error detection ; 73
5.5 The signal function 74
6 Th e prep rocesso r 77
6.1 Spaces matter in macro definitions ; .77
6.2 Macros are not functions 78
6.3 Macros are not statements 82
6.4 Macros are not type definitions 83
7 Porta biIity pi tfalls 85
7;1 Coping with change ; ; 85
7.2 What's in a name? 87
7.3 How big is an integer? 88
7.4 Are characters signed or unsigned? ; 89
7.5 Shift operators , 90
7.6 Memory location zero 91
7.7 How does division truncate? 92
7.8 How big is a random number? 93
7.9 Case conversion ; 93
7.10 Free first, then reallocate? ; 95
7.11 An example of portability problems ; ; 96
8 Advice and answers 101
8.1 Advice ; 102
8.2 Answers 105
CONTENTS
C TRAPS AND PITFALLS xi
Appendix: printf, varargs, and stdarg 121
A.1 The pr in tf fami!y 121
Simple format types : 123
Modifiers 127
Flags 130
Variable field width and precision 132
Neologisms :.•........................................................... -.133
Anachronisms 133
A.2 Variable argument lists with varargs.h 134
Implementing varargs .h ; 138
A.3 stdarg. h: the ANSI varargs .h 139