The trailing _
might be added to avoid collision with user-defined identifiers. For example, you might have a header file named get.h
and at the same time you can conceivably have your own macro (or variable, or function) named GET_H
. So, using GET_H
for include guard in get.h
would easily lead to problems.
The standard library header files might use a leading _
to name its internal macros for the very same purpose - to avoid name collision with user-defined identifiers. For that reason, the language specification explicitly prohibits user-defined identifiers that begin with _
and a capital letter. And for the very same reason, the leading _
cannot be used in the names of include guards.
So, Eclipse decided to use a trailing _
for the very same purpose. It provides a reasonable level of protection from name collisions and does not violate the requirements of language specification.