The C/C++ pre-processor can do more than you probably think it can. Quite a lot more. In fact, it's almost certainly Turing complete.
In this talk we'll start by looking at some standard examples of using the pre-processor, and how to avoid some of its more common traps and pitfalls.
We'll quickly move on to examine some decidedly non-standard examples. The pre-processor has some well known restrictions which we'll have work our way around them, sometimes using ingenious techniques, sometimes using brute force.
We'll end by writing FizzBuzz entirely in the pre-processor.