English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 14h 5m | 1.86 GB
Discover the full power of modern C programming, with an inside look at the new C23 standard.
For programs that need to be small, fast, and reliable, C is the gold standard. Whether you’re writing embedded code, low-level system routines, or high-performance applications, C is up to the challenge. This unique book by Jens Gustedt, a member of the ISO C standards committee, gets you up to speed with C23.
In Modern C, Third Edition you’ll:
- Learn C basics, core features, and advanced concepts
- Leverage major C23 improvements for security, reliability, and performance
- Write portable code that runs anywhere
- Build multi-threaded applications with atomics and synchronization
- Create robust and resilient software with error handling
- Use type-generic programming for reusable code
In Modern C, Third Edition you’ll learn to harness C’s full potential using the latest tools and techniques. After a quick review of the fundamentals suited for coders who haven’t used C in a while, this book guides you to mastery of C23, the latest ISO standard.
From code running on the smallest embedded devices to the low-level libraries behind popular programming languages like Python and Ruby, the software world depends on C. And even after 50 years, it’s still getting better! The new C23 standard adds improvements for security, reliability, and performance. In this thoroughly-revised new edition, author Jens Gustedt gives you an authoritative inside view.
Modern C, Third Edition is a fast-paced introduction to the C language, with special attention on its most modern features. It starts with a quick review of structure, grammar, and execution and then progresses quickly to control structures, data types, operators, and other core language features. Fully revised for C23, this expanded Third Edition covers compound expressions and lambdas, new insights into approaching program failure, and how to transition smoothly to C23.
What’s Inside
- All major C23 features
- Portable code that runs anywhere
- Multi-threaded applications with atomics and synchronization
- Use type-generic programming for reusable code
Table of Contents
1 Part 0. Encounter
2 Chapter 1. Getting started
3 Chapter 1. Compiling and running
4 Chapter 1. Summary
5 Chapter 2. The principal structure of a program
6 Chapter 2. Declarations
7 Chapter 2. Definitions
8 Chapter 2. Statements
9 Chapter 2. Summary
10 Part 1. Acquaintance and Buckle up
11 Chapter 3. Everything is about control
12 Chapter 3. Iterations
13 Chapter 3. Multiple selection
14 Chapter 3. Summary
15 Chapter 4. Expressing computations
16 Chapter 4. Arithmetic
17 Chapter 4. Operators that modify objects
18 Chapter 4. Boolean context
19 Chapter 4. The ternary or conditional operator
20 Chapter 4. Evaluation order
21 Chapter 4. Summary
22 Chapter 5. Basic values and data
23 Chapter 5. Basic types
24 Chapter 5. Specifying values
25 Chapter 5. Implicit conversions
26 Chapter 5. Initializers
27 Chapter 5. Named constants
28 Chapter 5. Binary representations
29 Chapter 5. Summary
30 Chapter 6. Derived data types
31 Chapter 6. Pointers as opaque types
32 Chapter 6. Structures
33 Chapter 6. New names for types – Type aliases
34 Chapter 6. Summary
35 Chapter 7. Functions
36 Chapter 7. main is special
37 Chapter 7. Recursion
38 Chapter 7. Summary
39 Chapter 8. C library functions
40 Chapter 8. Integer arithmetic
41 Chapter 8. Numerics
42 Chapter 8. Input, output, and file manipulation
43 Chapter 8. String processing and conversion
44 Chapter 8. Time
45 Chapter 8. Runtime environment settings
46 Chapter 8. Program termination and assertions
47 Chapter 8. Summary
48 Part 2. Cognition
49 Chapter 9. Style
50 Chapter 9. Naming
51 Chapter 9. Internationalization, so to speak
52 Chapter 9. Summary
53 Chapter 10. Organization and documentation
54 Chapter 10. Implementation
55 Chapter 10. Summary
56 Chapter 11. Pointers
57 Chapter 11. Pointers and structures
58 Chapter 11. Pointers and arrays
59 Chapter 11. Function pointers
60 Chapter 11. Summary
61 Chapter 12. The C memory model
62 Chapter 12. Unions
63 Chapter 12. Memory and state
64 Chapter 12. Pointers to unspecific objects
65 Chapter 12. Explicit conversions
66 Chapter 12. Effective types
67 Chapter 12. Alignment
68 Chapter 12. Summary
69 Chapter 13. Storage
70 Chapter 13. Storage duration, lifetime, and visibility
71 Chapter 13. Digression – Using objects before their definition
72 Chapter 13. Initialization
73 Chapter 13. Digression – A machine model
74 Chapter 13. Summary
75 Chapter 14. More involved processing and IO
76 Chapter 14. Formatted input
77 Chapter 14. Extended character sets
78 Chapter 14. UTF character encodings
79 Chapter 14. Restartable text conversion
80 Chapter 14. Binary streams
81 Chapter 14. Summary
82 Chapter 15. Program failure
83 Chapter 15. Program state degradation
84 Chapter 15. Unfortunate incidents
85 Chapter 15. Series of unfortunate events
86 Chapter 15. Dealing with failures
87 Chapter 15. Error checking and cleanup
88 Chapter 15. Summary
89 Part 3. Experience
90 Chapter 16. Performance
91 Chapter 16. Using restrict qualifiers
92 Chapter 16. Unsequenced and reproducible attributes
93 Chapter 16. Measurement and inspection
94 Chapter 16. Summary
95 Chapter 17. Function-like macros
96 Chapter 17. Argument checking
97 Chapter 17. Accessing the context of invocation
98 Chapter 17. Variable-length argument lists
99 Chapter 17. Default arguments
100 Chapter 17. Summary
101 Chapter 18. Type-generic programming
102 Chapter 18. Generic selection
103 Chapter 18. Type inference
104 Chapter 18. Anonymous functions
105 Chapter 18. Summary
106 Chapter 19. Variations in control flow
107 Chapter 19. Sequencing
108 Chapter 19. Short jumps
109 Chapter 19. Functions
110 Chapter 19. Long jumps
111 Chapter 19. Signal handlers
112 Chapter 19. Summary
113 Chapter 20. Threads
114 Chapter 20. Race-free initialization and destruction
115 Chapter 20. Thread-local data
116 Chapter 20. Critical data and critical sections
117 Chapter 20. Communicating through condition variables
118 Chapter 20. More sophisticated thread management
119 Chapter 20. Ensure liveness
120 Chapter 20. Summary
121 Chapter 21. Atomic access and memory consistency
122 Chapter 21. C library calls that provide synchronization
123 Chapter 21. Sequential consistency
124 Chapter 21. Other consistency models
125 Chapter 21. Summary
126 Appendix A. Transitional code
127 Appendix B. C compilers
128 Appendix B. Missing embed
129 Appendix B. Missing constexpr
130 Appendix B. Missing 128-bit integer support
131 Appendix C. C libraries
132 Appendix C. Improved UTF-8 support
133 Appendix C. Bit utilities
134 Appendix C. Checked integer arithmetic
135 Appendix C. Formatted IO
136 Appendix C. Mathematical functions
137 Appendix C. A reference implementation for musl libc
Resolve the captcha to access the links!
