While the code that is provided by the Arduino development environment,
(core code and libraries), does not have any C code that currently uses these macros
At this point, there is no reason not to.
seems to a bit of an overstatement with respect to creating a C++ only solution.
Why does the solution need to work for C?
So that it can be finally be put to bed rather than having to revisit this again
in the future when something in a C module "breaks".
Maybe it is a 3rd party library, or heaven forbid some
new C code in say the Due C core code wants/needs to use these type of macros.
IMHO, this kind of stuff really should be done by the compiler and LibC people rather than being done
in individual projects.
Of course, another approach, which would carry on in the seemingly odd, IMHO, Arduino/Wiring Language
"Re-Inventing the Wheel Syndrome", would be to create new Class/Macro/Template "functions"
with names like Min(), Max(), Abs(), Constrain(), and Round() that do what the old functions/macros
did.
But even if you do that, you still need to fix the existing min()/max() ... macros.
--- bill