A collection of resources on modern C .
The goal is to collect a list of resouces to help people learn about and leverage modern C 11 and beyond.
To add, remove or change things on the list: please submit a pull request to the GitHub repository.
- Consider the C Core Guidelines.
- Never manually format code, use clang-format.
- Build your code using CMake.
- Test your code using Catch.
- Also test using sanitized builds: AddressSanitizer, ThreadSanitizer and MemorySanitizer.
- Use a fuzzer to test untrusted input: afl, libFuzzer, KLEE.
- The C Programming Language (Bjarne Stroustrup) [C 11]
- Effective Modern C (Scott Meyers) [C 11/14]
- Overview of the New C (Scott Meyers) [C 11/14]
- C Core Guidelines (Bjarne Stroustrup, Herb Sutter) [C 11/14/17] - Guidelines for using modern C .
For a comprehensive guide to C books see the Stackoverflow Definitive C Book Guide and List.
- Andrzej's C blog - Guidelines and thoughts about C .
- C Hints - Common mistakes and their solutions.
- Embedded in Academia - John Regehr, Professor of Computer Science, University of Utah, USA.
- Eric Niebler
- Guru of the Week (new posts) - A regular series of C programming problems created and written by Herb Sutter.
- Guru of the Week (older posts) - Older Guru of the Week posts.
- Marshall's C Musings
- Paul Fultz II's Blog
- Preshing on Programming
- Simplify C - Write clean and maintainable C .
- Sticky Bits - A blog looking at developing software for real-time and embedded systems.
- Sutter's Mill - Herb Sutter on software development.
- The View from Aristeia -Scott Meyers' Professional Activities and Interests.
- Visual C Team Blog
- Why is a raven like a writing desk?
- ACCU - The Conference for Developers.
- C Now - A gathering of C experts and enthusiasts.
- CppCon - The C Conference.
- Meeting C - A independent C Conference.
This is not supposed to be a comprehensive list of all C and C libraries. It is a list of high-quality modern libraries with general applicability (serialization, database, testing, etc) or high-quality libraries with novel use of new C features.
- autocheck - QuickCheck and SmallCheck clones for C .
- Bandit - A header-only framework for C 11 that wants to make working with unit tests a pleasant experience.
- Boost.Hana - Your standard library for metaprogramming.
- Boost - Collection of C libraries.
- C Format - Small, safe and fast formatting library for C .
- CAF - An Open Source Implementation of the Actor Model in C .
- Catch - A modern, C -native, header-only, framework for unit-tests, TDD and BDD.
- doctest - The lightest feature rich C single header testing framework.
- cereal - A C 11 library for serialization.
- ChaiScript - An easy to use embedded scripting language for C .
- Cinder - Cinder is a free and open source library for professional-quality creative coding in C .
- cpptoml - A header-only library for parsing TOML configuration files.
- cppitertools - itertools (python) implementation for C 14
- cpr - C Requests: Curl for People, a spiritual port of Python Requests.
- Crow - Crow is very fast and easy to use C micro web framework.
- cxxopts - Lightweight C command line option parser.
- docopt.cpp - docopt creates beautiful command-line interfaces.
- fixed_size_function - Fixed size function wrapper like std::function.
- Folly - Facebook Open-source Library.
- iod - Meta programming utilities for C 14.
- json - JSON for Modern C .
- jsoncpp - A C library for interacting with JSON.
- Junction - Concurrent data structures in C .
- mongo-cxx-driver - C Driver for MongoDB.
- mstch - A implementation of Mustache templates using modern C .
- Mustache - Mustache text templates in C 11.
- Nonius - A C micro-benchmarking framework.
- PEGTL - Parsing Expression Grammar Template Library (C 11, header-only).
- pistache - An elegant C REST framework.
- pybind11 - Seamless operability between C 11 and Python.
- rang - A simple, modern & header only C 11 library for colors in your terminal.
- range-v3 - Experimental range library for C 11/14/17.
- rapidcheck - QuickCheck clone for C .
- redox - Modern, asynchronous, and wicked fast C 11 client for Redis.
- simple_match - Simple header only pattern matching for c 14.
- sol2 - C library binding to Lua.
- sqlite3pp - C wrapper of SQLite3 API.
- sqlite_orm - powerful header only SQLite3 ORM library for C 14
- sqlpp11 - A type safe SQL template library for C .
- tinyformat.h - Minimal, type safe printf replacement library for C .
- tinytoml -A header only C 11 library for parsing TOML.
- tweeny - A header only interpolation library with 30 easing functions.
- yaml-cpp - A YAML parser and emitter in C .
- C Questions Subreddit - A great place to get help.
- C Samples - A repository of modern C samples.
- C Subreddit - Discussions, articles, and news about the C programming language.
- C Super-FAQ - The C Super-FAQ.
- C reference - C reference.
- C 11 FAQ
- CppCast - The only podcast for C developers by C developers.
- Stackoverflow C 11
- Stackoverflow C 14
- Stackoverflow C
- The C Programming Language - News, Status & Discussion about Standard C .
- CppCon Talks - Talks from the C Conference.
- CppCon 2014: Bjarne Stroustrup "Make Simple Tasks Simple!"
- CppCon 2014: Herb Sutter "Lock-Free Programming (or, Juggling Razor Blades), Part I"
- CppCon 2014: Herb Sutter "Lock-Free Programming (or, Juggling Razor Blades), Part II"
- CppCon 2014: Scott Meyers "Type Deduction and Why You Care"
- CppCon 2015: Bjarne Stroustrup "Writing Good C 14"
- CppCon 2015: Herb Sutter "Writing Good C 14... By Default"
- CppCon 2016: Chandler Carruth “Garbage In, Garbage Out: Arguing about Undefined Behavior..."
- CppCon 2016: Herb Sutter "Leak-Freedom in C ... By Default."
- code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care (slides)
- code::dive conference 2015 - Andrei Alexandrescu - Writing Fast Code I (slides)
- code::dive conference 2015 - Andrei Alexandrescu - Writing Fast Code II (slides)
- C Now Talks - Talks from the C Now conference.
- Going Native 2012: Variadic Templates are Funadic
- Going Native 2013: Stephan T Lavavej - "Don't Help the Compiler"
- American fuzzy lop - American fuzzy lop is a security-oriented fuzzer.
- cget - CMake package retrieval.
- clang-format - A tool to format C code.
- clang-tidy - A clang-based C "linter" and static analysis tool.
- CMake - Cross-platform family of tools designed to build, test and package software.
- Compiler Explorer - Interactively explore the assembly output of your C code.
- conan - C/C package manager.
- cppcheck - Static analysis of C/C code.
- Hunter - Cross-platform package manager for C .
- irony-mode - A C/C minor mode for Emacs powered by libclang.
- modern-cpp-font-lock-mode - Syntax highlighting support for Modern C with emacs
This list was compiled by Erik Rigtorp with help from the C community: