Does underscore convention matter?
Да. Это важно.
Идентификаторы с ведущим знаком подчеркивания, за которым следует буква верхнего регистра, зарезервированы для реализации. Таким образом, у вас возникнет неопределенное поведение .
Ниже приводится спецификация стандарта Си для именования идентификаторов (C11 draft):
7.1.3 Зарезервированные идентификаторы
Каждый заголовок объявляет или определяет все идентификаторы, перечисленные в его связанного подпункта , и, необязательно, объявляет или определяет идентификаторы , перечисленные в соответствующем подпункте соответствующих будущих библиотек, и идентификаторы, которые всегда зарезервированы либо для любого использования, либо для используйте как идентификаторы области файла.
- Все идентификаторы, начинающиеся с символа подчеркивания, и либо заглавная буква, либо другое подчеркивание всегда зарезервированы для использования любого .
- Все идентификаторы, начинающиеся с символа подчеркивания, всегда зарезервированы для использования в качестве идентификаторов с размером файла как в обычном, так и в теге пространства имен.
- Каждое имя макроса в любом из следующих подпунктов (включая направления будущих библиотек ) зарезервировано для использования, как указано, если включен какой-либо из связанных с ним заголовков; если явно не указано иное (см. 7.1.4). - Все идентификаторы с внешней связью в любом из следующих подпунктах (включая будущие направления библиотек) и errno всегда зарезервированы для использования в качестве идентификаторов с внешним linkage.184). - Каждый идентификатор с областью файлов, указанным в любом из , следующих подзаголовки (включая будущие направления библиотек) - это , зарезервированные для использования в качестве имени макроса и как идентификатор с областью файлов в том же пространстве имен, если включен какой-либо из его связанных заголовков.
Никаких других идентификаторов не зарезервировано. Если программа объявляет или определяет идентификатор в контексте, в котором он зарезервирован (кроме как , разрешенный в соответствии с 7.1.4), или определяет зарезервированный идентификатор в качестве имени макроса, , поведение не определено.
Если программа удаляет (с #undef) любое определение макроса идентификатора в первой группе, указанной выше, поведение не определено.
Не нарушая ни одно из вышеперечисленных, имя охранника включения может быть чем угодно и не должно быть именем файла заголовка.Но обычно конвенция, которую я видел/использую, заключается в том, чтобы использовать то же имя, что и имя файла заголовка, чтобы оно не вызывало ненужной путаницы.
Я считаю, что это уже было полностью покрыто [здесь] (http://stackoverflow.com/questions/4867559/naming-include-guards). –
Или еще лучше, если вы ищете более обширное освещение темы, рассмотрите http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#The__define_Guard. Вы также можете прочитать руководство по стилю google, как ссылку –