Simplify.
Fix use-after-return bug.
Fix include guard.

If there's a macro before #ifndef, the file should not considered
to be guarded by the #ifndef.