Updated: 21-Jul-2023
Language
- The GNU C Reference Manual
- The GNU C Library Reference Manual
- The GNU C Preprocessor
- The C Library Reference Guide
- C reference
- comp.lang.c FAQ
- Summary of formatted output (printf)
- GNU Make Manual
- Modern C – Jens Gustedt
- C11:
- a very rapid overview and some links to more information about the latest C standard, C11
- the latest publicly available version of the C11 standard is the document WG14 N1570, dated 2011-04-12. This is a WG14 working paper, but it reflects what was to become the standard at the time of issue (source)
- C99:
- Rationale for International Standard – Programming Languages – C (C99)
- the latest publicly available version of the C99 standard is the combined C99 + TC1 + TC2 + TC3, WG14 N1256, dated 2007-09-07. This is a WG14 working paper, but it reflects the consolidated standard at the time of issue (source)
- Embedded C:
- the latest draft, approved for publication, is in document N1169 (source)
Memory allocation
- Wikipedia article on C dynamic memory allocation
- static, automatic and dynamic storage
- why dynamic memory should be handled with care
- an example of a memory allocator (quite an old article)
- three articles on stacks and heap:
- GNU C: functions that can be useful when dealing with memory allocation
Flexible arrays
- Bounded Flexible Arrays in C – Kees Cook
- Arrays of Length Zero – GCC
- Use the correct syntax when declaring a flexible array member – SEI CERT C Coding Standard
Undefined behavior
- How ISO C became unusable for operating systems development
- A Guide to Undefined Behavior in C and C++
- What Every C Programmer Should Know About Undefined Behavior
Make
Volatile keyword
- How to Use C’s volatile Keyword (Barr Group)
- C keywords: Don’t flame out over volatile
- Nine ways to break your systems code using volatile
Coding standards
- SEI CERT C Coding Standard
- updated version of the Indian Hill C Style and Coding Standards paper – 1997
- Google C++ Style Guide
- Barr Group’s Embedded C Coding Standard
- Rules for secure C language software development – ANSSI
Portability
Test
- Wikipedia: a list of C unit testing frameworks
Obfuscation
Tools
- from ThrowTheSwitch.org:
- Unity: unit testing
- CMock: generation of stubs and mocks
- Ceedling: test build management
- CException: exception handling for C
Network programming
Misc.
- The Development of the C Language – Dennis M. Ritchie