List of Listings

Chapter 1. Getting started

Listing 1.1. A first example of a C program

 Terminal

 getting-started.c

 Terminal

 Terminal

 Terminal

Listing 1.2. An example of a C program with flaws

 Terminal

 Terminal

Chapter 2. The principal structure of a program

 getting-started.c

 getting-started.c

 Terminal

 getting-started.c

 getting-started.c

 getting-started.c

Chapter 3. Everything is about control

 Terminal

Listing 3.1. Computing multiplicative inverses of numbers

 Terminal

Chapter 5. Basic values and data

Listing 5.1. An enumeratin type and related array of strings

Chapter 6. Derived data types

Listing 6.1. A function with an array parameter

Listing 6.2. Using some of the string functions

 Terminal

 yday.c

 yday.c

 yday.c

 yday.c

Listing 6.3. A sample program manipulating struct tm

Chapter 7. Functions

 yday.c

 euclid.h

 euclid.h

 fibonacci.c

 fibonacciCache.c

 fibonacci2.c

Chapter 8. C library functions

Listing 8.1. flushing buffered output

Listing 8.2. Implementing fgets in terms of fgetc

Listing 8.3. A program to dump multiple text files to stdout

 strtoul.c

 strtoul.c

 strtoul.c

 Terminal

Chapter 10. Organization and documentation

 heron_k.h

 rationals.h

 rationals.c

 rationals.c

 rationals.c

 rationals.c

 rationals.c

Listing 10.1. A type for computation with rational numbers.

Chapter 11. Pointers

 timespec.c

 rationals.c

 rationals.c

 rationals.c

 rationals.c

 rationals.c

 rationals.c

Chapter 12. The C memory model

 endianness.c

 endianness.c

 Terminal

 endianness.c

 Terminal

 crash.c

Chapter 13. Storage

 circular.c

 circular.c

 circular.c

 circular.c

 circular.c

 circular.c

 circular.c

 circular.c

 circular.c

Listing 13.1. An example of shadowing with local variables

Listing 13.2. An example of shadowing with an extern variable

Listing 13.3. A contrived example for the use of a compound literal

 Terminal

Listing 13.4. An assembler version of the fgoto function

Listing 13.5. An optimized assembler version of the fgoto function

Chapter 14. More involved processing and IO

 numberline.c

 numberline.c

 numberline.c

 numberline.c

 numberline.c

 numberline.c

 mbstrings-main.c

 mbstrings-main.c

 mbstrings.c

 mbstrings.h

 mbstrings.c

 mbstrings.c

 mbstrings.c

 numberline.c

 numberline.c

 numberline.c

 numberline.c

Chapter 15. Performance

Listing 15.1. Measuring several code snippets repeatedly

 timespec.c

Listing 15.2. Collecting time statistics with timespec_diff and stats_collect2

Listing 15.3. Printing time statistics with stats_mean and stats_rsdev_unbiased

 Terminal

Listing 15.4. Collecting statistics up to the third moment

 stats.h

Listing 15.5. GCC’s assembler for stats_collect2(c)

Listing 15.6. Instrumenting three for loops with struct timespec

Listing 15.7. GCC’s version of the first loop from Listing 15.6

Listing 15.8. Clang’s version of the first loop from listing 15.6

Listing 15.9. GCC’s version of the second loop from listing 15.6

Listing 15.10. GCC’s version of the third loop from listing 15.6

Chapter 16. Function-like macros

 macro_trace.h

 macro_trace.c

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.c

 Terminal

 macro_trace.h

 macro_trace.c

 Terminal

 macro_trace.h

 macro_trace.h

 generic.h

 macro_trace.h

 macro_trace.c

 Terminal

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.c

 Terminal

 macro_trace.h

 macro_trace.c

 Terminal

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

 va_arg.c

 va_arg.c

 generic.h

 generic.h

 generic.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

 macro_trace.h

Chapter 17. Variations in control flow

Listing 17.1. A recursive descent parser for code indentation

 Terminal

 sequence_point.c

 Terminal

 Terminal

 basic_blocks.c

 basic_blocks.c

Listing 17.2. The user interface for the recursive descent parser

 Terminal

 basic_blocks.c

 sighandler.h

 sighandler.c

 basic_blocks.c

 Terminal

 sighandler.c

 sighandler.h

 sighandler.c

 sighandler.h

 sighandler.h

Chapter 18. Threads

 B9.c

 B9.c

 B9.c

 B9.c

 B9.c

 life.h

 life.h

Listing 18.1. The input thread function of B9

Listing 18.2. The account thread function of B9

Listing 18.3. The update thread function of B9

Listing 18.4. The draw thread function of B9

 life.c

 B9.c

 B9.c

 B9.c

 B9.c

 B9-detach.c

 B9-detach.c