Skip to content

agagniere/blackmagic

Repository files navigation

Black Magic

impossible is not a C keyword

Learn about C preprocessor tricks

This book delves into techniques to generate C code with the preprocessor, starting with a reminder about what the preprocessor is and how it is integrated in the C compilation pipeline, then building up increasingly complex tools anyone can use in their C projects.

Read it online !

Tools

Add this project as a dependency to your C project today (using Zig, Nix or Conan) to get:

Roadmap

I would like to explain the following tricks in the book:

  • Logging
  • Default arguments
  • Function overloading
  • Enum to/from string
  • Serialization / Deserialization of a structure
  • Unit-tests library

Extras

  • Sphinx directive to show C code before and after preprocessing
  • Custom pygment lexer to color the code the way the preprocessor sees it