Defining or declaring identifiers with reserved names may lead to undefined behavior. Therefore, reserved names should not be used as
identifiers.
This rule applies to:
  -  defined
-  identifiers that contain two consecutive underscores 
-  identifiers that begin with an underscore, followed by an uppercase letter 
-  identifiers in the global namespace that start with an underscore