I heard a long time ago that CPP was derived from M4, and read
that a few folks including myself have looked for IF / ENDIF type
macros to use on other projects. CPP is not ideal in that it wants
to take extra steps like tokenizing the source.
I defined the names without the #'s eg. IF, ELSE, ENDIF, etc...
Also M4 requires parentheses to hold the arguments where CPP
does not (at least for most of these). I also added a selective
invoke, to protect macros with side effects from invocation in
an unselected block.
I was wondering if they pass muster, if the devs might consider
including them or something similar in M4's list of examples.