Трейлинг _
может быть добавлен во избежание конфликта с пользовательскими идентификаторами. Например, у вас может быть заголовочный файл с именем get.h
, и в то же время вы можете иметь собственный макрос (или переменную, или функцию) с именем GET_H
. Таким образом, использование GET_H
для включения защиты в get.h
может легко привести к проблемам.
Стандартные заголовочные файлы библиотеки могут использовать начальный _
для именования своих внутренних макросов с той же целью - чтобы избежать конфликта имен с определенными пользователем идентификаторами. По этой причине спецификация языка явно запрещает определенные пользователем идентификаторы, которые начинаются с _
и заглавной буквы. И по той же причине, ведущий _
не может быть использован в именах включенных охранников.
Итак, Eclipse решил использовать трейлинг _
для той же цели. Он обеспечивает разумный уровень защиты от коллизий имен и не нарушает требования спецификации языка.