What are ‘macro functions’ in C?

In C, the #define preprocessor command has two different forms. One form replaces tokens. Another form replaces function calls.

Examples of the difference:

// A simple replacement macro:
#define FOO 3
// A function macro:
#define INCR(x) (x++)

I wrote this because I felt like it. This post is not associated with my employer.