FP should say FAIL_POINT to avoid confusion with floating point, etc.
DECLARE is really a definition
FORWARD_DECLARE is really a declaration.
The docs are a little technically wrong when they refer to scope.
The C++ emitted by the macro uses identifiers without full scope qualification.
These are all easily fixed.