Functional C Programming (Or, why God, why?)
github.com
github.com
Someone will tweet them for you.
In all seriousness though, it's basically supposed to teach about function pointers.
I would never, ever recommend programming like this.
In response to the macros, i think that would make the program particularly hard to reason about because part of the program would be rewritten at compile time.
I would discourage the use of macros. I believe that Brian Kernighan would agree with me.
As a rule of thumb, it is better to use enums over #defines and avoid macros like death. Stick to the most standard, simple parts of the language and your programs will be most readable and likely elegant.
Macros are arguably one of the most standard and simplest parts of C. They are much more dependable than, say, gcc inline functions (in my experience). Just don't try to do bizarre things with them. Study how the best C programmers use them, and imitate.
And BTW, you should know that death is unavoidable! :)
Perhaps you are onto something here.
What I have wanted is closures that you can stick data inside. But they can't be done in a reasonable way in a language like C. The C++ version falls short of usefulness.
One thing I would like in C is a more programmable preprocessor. C++ templates are on to something useful -- metaprogramming removes some of the drudgery from writing fast native code. Templates are fatally flawed, though. I think it may be possible to get some of the benefits from a smarter preprocessor -- if it was done conservatively in the C style.