A list of awesome C preprocessor stuff
See also: "The Preprocessor Iceberg Meme".
hirrolot/metalang99-- Full-blown preprocessor metaprogramming.boostorg/preprocessor-- Boost.org preprocessor module.boostorg/vmd-- Boost.org VMD module.rofl0r/order-pp-- order-pp preprocessor library (standalone part of chaos-pp).rofl0r/chaos-pp-- chaos preprocessor library. this is what boost preprocessor derived from.pfultz2/Cloak-- A mini-preprocessor library to demonstrate the recursive capabilities of the preprocessor.pfultz2/ZLang-- A plugin framework for namespace macros in C/C++.mcinglis/libpp-- Functional-programming macros for the C preprocessor.mcinglis/macrofun-- Standards-defying functional-programming macros for the C preprocessor.gustedt/p99-- Macros and functions for C99.twhitehead/c99-meta-- Abusing the C99 preprocessor for meta-programming.metacall/core/source/preprocessor-- Preprocessor Library by Parra Studios.
hirrolot/datatype99-- Algebraic data types for C99.hirrolot/interface99-- Zero-boilerplate interfaces for C99.orangeduck/Cello-- Higher level programming in C.CObjectSystem/COS-- C Object System: a framework that brings C to the level of other high level programming languages and beyond.small-c/obj.h-- A single-header supports OOP in pure C.shakna-israel/LetsDestroyC.md-- Let's Destroy C.yulon/clofn-- A closure function implementation for C.alexanderchuranov/Metaresc-- META data and RESource library for C language.Leushenko/C99-Lambda-- Purely evil preprocessor macros adding anonymous functions and closures to ISO C99.Leushenko/Pyrite-- BASIC-style "compiler" as C syntax library.emdash/goof-- A toy functional language created through the abuse of C.Qqwy/c_exceptional-- A simple Exception-handling library for C99.
BlueFlo0d/CSP-- Compile-time LISP interpreter on C macro preprocessor.cospplredman/PPLISP-- A set of 45 macros that allow for lisp-like preprocessor meta programming.Ferdi265/preprocessor_brainfuck-- A brainfuck interpreter using only the C preprocessor.orangeduck/CPP_COMPLETE-- Brainfuck interpreter written in the C preprocessor.mkotha/bfi-- A brainfuck interpreter on the C preprocessor.notfoundry/bf.h-- Brainfuck interpreter written in the C preprocessor.notfoundry/ppasm-- x86_64 macro assembler entirely in C preprocessor.
ptaffet/preprocessor-debug-- Observe how the C preprocessor expands your complicated macros.notfoundry/ppstep-- Interactive C/C++ preprocessor macro debugger.messer-cpp/messer-- REPL for C preprocessor of C++17.
mcpp-- A portable C preprocessor.Cedro-- A C language extension that works as an (external) preprocessor.eudoxia0/cmacro-- Lisp macros for C.eudoxia0/magma-- A collection of useful macros based oncmacro.swansontec/map-macro-- A recursive C preprocessor macro which performs an operation on each element of a list.M4GNV5/CppFun-- Arithmetic in the C preprocessor by representing numbers as arrays of 8-bit elements.ramdeoshubham/macros-- A collection of commonly used C MACROS.cher-nov/Gena-- Generic pseudo-templated containers written in C89, inspired by C++ STL.agrif/Makefile-- A horrible, horrible, wonderful C Preprocessor hack library.notfoundry/wtf.c-- 4-bit ALU metaprogrammed in C11's_Generic.kcning/binom-- C macro that computes binominal coefficient at compile time.ldionne/cisp-- A C preprocessor library implementing object semantics.rofl0r/thread_wrapper-- A thread launcher wrapper macro based on Boost/Preprocessor.18sg/uSHET-- A Malloc-Free SHET Client Library for Microcontrollers (lib/cpp_magic.h).ScrimpyCat/CommonC-- Common utilities for C (CommonC/Template.h).
- 7 Scandalous Weird Old Things About The C Preprocessor by Robert Elder.
- Coroutines in C by Simon Tatham.
- IOCC "Best abuse of the C preprocessor" by Immanuel Herrmann.
- Metaprogramming custom control structures in C by Simon Tatham.
- Advanced metaprogramming in C by Martin Sústrik.
- C/C++ Preprocessor Metaprogramming by Saad Ahmad.
- The Love/Hate Relationship with the C Preprocessor: An Interview Study by Flávio Medeiros, Christian Kästner, Márcio Ribeiro, Sarah Nadi, Rohit Gheyi.
- Outperforming LAPACK with C metaprogramming by Oleksandr Kaleniuk.
- C Pre-Processor Magic by Jonathan Heathcote.
Some worth-noting articles:
