没有合适的资源?快使用搜索试试~ 我知道了~
C++ Annotated Reference Manual
2星 需积分: 17 39 下载量 89 浏览量
2008-09-12
15:08:45
上传
评论 1
收藏 1.45MB PDF 举报
温馨提示
试读
197页
C++ Annotated Reference Manual,带注释的C++参考手册
资源推荐
资源详情
资源评论
C++ Annotated Reference Manual
Version 5.5.0
Peter A. Buhr
c
1
1995, 1996, 1998, 2000, 2003, 2004, 2005, 2007
Peter A. Buhr and Richard A. Stroobosscher
c
1
1992
September 19, 2007
1
Permission is granted to redistribute this manual unmodified in any form; permission is granted to redistribute
modified versions of this manual in any form, provided the modified version explicitly attributes said modifications to
their respective authors, and provided that no modification is made to these terms of redistribution.
Contents
Preface 1
1
C++ Extensions 3
1.1 Design Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Elementary Execution Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 High-level Execution Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2
C++ Translator 7
2.1 Extending C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Compile Time Structure of a
C++ Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3
C++ Runtime Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.1 Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2 Virtual Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4
C++ Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5 Using the
C++ Translator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5.1 Compiling a
C++ Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5.2 Preprocessor Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Labelled Break/Continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7 Coroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.7.1 Coroutine Creation and Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7.2 Inherited Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7.3 Coroutine Control and Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.8 Mutex Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.9 Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9.1 Implicit Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9.2 External Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9.2.1 Accept Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9.2.2 Breaking a Rendezvous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9.2.3 Accepting the Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9.2.4 Commentary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.9.3 Internal Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.9.3.1 Condition Variables and Wait/Signal Statements . . . . . . . . . . . . . . . . . . . 26
2.9.3.2 Commentary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.10 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.10.1 Monitor Creation and Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.10.2 Monitor Control and Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.11 Coroutine Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.11.1 Coroutine-Monitor Creation and Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.11.2 Coroutine-Monitor Control and Communication . . . . . . . . . . . . . . . . . . . . . . . . 29
2.12 Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.12.1 Task Creation and Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.12.2 Inherited Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
iii
iv
CONTENTS
2.12.3 Task Control and Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.13 Commentary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.14 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.15 Explicit Mutual Exclusion and Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.15.1 Counting Semaphore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.15.1.1 Commentary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.15.2 Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.15.3 Owner Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.15.4 Condition Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.15.5 Barrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.16 User Specified Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.16.1 Predefined Floating-Point Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.17 Implementation Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3 Asynchronous Communication 45
3.1 Futures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.1 Client Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.2 Server Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.3 Explicit Storage Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.1.4 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.5 Implicit Storage Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2 Future Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.1 Select Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2.2 Wait Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3 Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4 Input/Output 57
4.1 Nonblocking I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 C++ Stream I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.3 UNIX File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.3.1 File Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.4 BSD Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.4.1 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4.2 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.4.3 Server Acceptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5 Exceptions 69
5.1 EHM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2
C++ EHM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3 Exception Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.1 Creation and Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3.2 Inherited Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4 Raising . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.4.1 Nonlocal Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.4.2 Enabling/Disabling Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.4.3 Concurrent Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.5 Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.5.1 Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.5.2 Resumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.5.3 Termination/Resumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.5.3.1 Recursive Resuming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.5.3.2 Preventing Recursive Resuming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.5.3.3 Commentary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
CONTENTS
v
5.6 Bound Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.6.1 C++ Exception-Handling Deficiencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.6.2 Object Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6.3 Bound Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6.3.1 Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6.3.2 Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6.3.3 Resumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.7 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.8 Predefined Exception Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.8.1 terminate/set terminate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.8.2 unexpected/set unexpected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.8.3 uncaught exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.9 Programming with Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.9.1 Terminating Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.9.2 Resuming Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.9.3 Terminating/Resuming Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.10 Predefined Exception-Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.10.1 Implicitly Enabled Exception-Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.10.2 Unhandled Exception in Coroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.10.3 Breaking a Rendezvous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6 Cancellation 91
6.1 Using Cancellation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.2 Enabling/Disabling Cancellation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.3 Commentary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7 Errors 95
7.1 Static (Compile-time) Warnings/Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.2 Dynamic (Runtime) Warnings/Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.2.1 Assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.2.2 Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.2.3 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.2.3.1 Default Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.2.3.2 Coroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.2.3.3 Mutex Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.2.3.4 Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.2.3.5 Condition Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.2.3.6 Accept Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.2.3.7 Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.2.3.8 Locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.2.3.9 Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.2.3.10 Heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2.3.11 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.2.3.12 Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.2.3.13 UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
8
C++ Kernel 119
8.1 Pre-emptive Scheduling and Critical Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.2 Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.3 Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.4 Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.4.1 Implicit Task Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4.2 Idle Virtual Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.4.3 Blocking Virtual Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
剩余196页未读,继续阅读
资源评论
- Shauton2012-01-30好像和《The Annotated C++ Reference Manual》不是同一个东西,这个叫《uC++ Annotated Reference Manual》。
- tanglinux2020-06-06假冒伪劣,名不副实。
malone1
- 粉丝: 38
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功