agagniere/blackmagic
C preprocessor tricks, explained
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.
Add this project as a dependency to your C project today (using Zig, Nix or Conan) to get:
COLOR(UNDERLINED, BOLD, RED)
blackmagic/color.h
blackmagic/enum.h
blackmagic/log.h
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
Add the dependency in your build.zig.zon
by running the following command:
zig fetch --save git+https://github.com/agagniere/blackmagic#master
Then, in your build.zig
:
const blackmagic = b.dependency("blackmagic", .{});
// wherever needed:
exe.addIncludePath(blackmagic.path("include"));
Add the dependency in your conanfile.txt
[requires]
blackmagic/0.3