Fix reserved name check.

* According to the standard, reserved names that either begin with underscore
followed by a capital letter and a capital letter, contain 2 consecutive
underscores, or are part of the reserved keywords.
* The check was not working for function-like macros.
* The check could report errors if #define is used in commnets.