C language

C language (wikipedia) is a programming language developed by Dennis Ritchie. It is an imperative, statically typed language.
C code maps efficiently to machine instructions because of its low level.


C99 standard
C99 Rationale

C11 standard
C1X final draft

POSIX standard (Wikipedia)
"Base Specifications". Posix.1-2008 (7). The Open Group

Standard Library

C standard library (Wikipedia)


comp.lang.c FAQ

C - Infrequently asked questions


What every programmer should know about memory (Ulrich Drepper)

Latency Numbers Every Programmer Should Know

How to C (as of 2016)


SEI CERT C Coding Standard

Secure Programming HOWTO - Creating Secure Software


The C Preprocessor

GCC command line options

Bison (Parser generator)
Flex The Fast Lexical Analyzer

make tool


GDB: The GNU Project Debugger


Git Command Quick Reminder

C data types

C data types (Wikipedia)

Floating Point

IEEE floating point (Wikipedia)

What Every Computer Scientist Should Know About Floating-Point Arithmetic

Can a IEEE 754 real number “cover” all integers within its range?

Anatomy of a floating point number

C Structures

Abstract Data Types (ADT)

An abstract data type (ADT) is a data type whose representation is hidden from the client.

When coding an ADT we focus in data and the operations we perform with it, without focusing in its internal implementation.

ADT is a way to provide encapsulation to our program design.

Abstract data type (wikipedia)

Why Study ADT

ADT in C


How to use assertions in C

assert.h (Wikipedia)

Exception mechanism

C does not provide a direct exception mechanism, but we can implement one using non-local jumps (setjmp) or with goto-s:

setjmp.h (Wikipedia)

C: goto statement considered helpful (Exception mechanism)

C tips

C tips

C: goto statement considered helpful

C - POSIX - Multithreading Programming

C POSIX Multithreading Programming

The International Obfuscated C Code Contest

Bad code is also interesting...