《C陷阱与缺陷 英文版》PDF下载

  • 购买积分:8 如何计算积分?
  • 作  者:(美)ANDREWKOENIG著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2013
  • ISBN:9787115308597
  • 页数:147 页
图书介绍:本书以作者在Bell实验室时发表的论文为基础,结合自己的工作经验总结而成。全书分为8章,分别从词法分析、语法语义、连接、库函数、预处理器、可移植性缺陷等几个方面分析了C编程中可能遇到的问题。最后,作者用一章的篇幅给出了若干具有实用价值的建议。

0 Introduction 1

1 Lexical pitfalls 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 10

2 Syntactic pitfalls 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 Semantic pitfalls 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&&,||,and!operators 48

3.9 Integer overflow 49

3.10 Returning a value from main 50

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 functions 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 The preprocessor 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 Portability pitfalls 85

7.1 Coping with change 85

7.2 Whats 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

Appendix:printf,varargs,and stdarg 121

A.1 The printf family 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