Ответ 1
Этот макрос используется как включить охрану? Если это так, похоже, вы дублируете имя, используемое в другом месте. Это обычная проблема, когда люди не думают о том, в какой сфере действия должен присутствовать охранник, и вы должны включать в него гораздо больше информации, чем просто имя файла.
Включить цели защиты:
- генерировать один раз при создании заголовка
- никогда не задумываться о себе снова
- вероятность дублирования меньше, чем ваш шанс выиграть в лотерею
Плохие включают имена охранников (для файла "config.h" ):
-
CONFIG_H
- слишком общий
-
_CONFIG_H
,CONFIG__H
,CONFIG_H__
,__CONFIG_H__
и т.д.- all reserved, все еще слишком общий
-
PROJECT_CONFIG_H
- лучше, гораздо реже дублировать в несвязанных проектах
- но по-прежнему нет информации о пути, легко дублировать в больших проектах
Хорошо включить имена охранников (для файла "config.h" ):
-
PATE_20091116_142045
- что
<last name>_<date>_<time>
- не требуется проект, путь, имя файла.
- легко печатать
- Если ваш редактор имеет функцию вставки, вы можете "набрать" ее очень быстро
- легко генерировать
- включает порядковый номер при генерации, если вам нужно сгенерировать более одного раза в секунду
- надежная гарантия универсальности.
- что
-
INCLUDE_GUARD_726F6B522BAA40A0B7F73C380AD37E6B
- сгенерированный из фактического UUID
- надежная гарантия универсальности.
- если он неожиданно появляется, "INCLUDE_GUARD" - хороший намек на то, что он есть, пока он служит для размещения его в отдельном пространстве имен (хотя условно, а не распознан языком).
- при необходимости добавьте имя проекта (что часто требуется в директивах проекта для макросов)
- легко написать собственную примерную программу для генерации
- сгенерированный из фактического UUID