В лягушке приборка, чек [LLVM-заголовок-охранник] ищет средства защиты заголовков в стиле LLVM, но я не могу найти примеров правильного стиля защиты заголовков в LLVM, в частности структуры имени, данного для определения, стандарты кодирования на страницах ничего не упоминается.
Глядя на юнит-тесты:
кажется, что он принимает несколько вариантов часто используемых шаблонов. Для файла с именем include/llvm/ADT/foo.h
Конвенция выглядит так:
#ifndef LLVM_ADT_FOO_H
#define LLVM_ADT_FOO_H
//...
#endif // LLVM_ADT_FOO_H
Предположительно кодовая база LLVM соответствует стандартам кодирования LLVM, поэтому можно просто взглянуть на несколько заголовочных файлов LLVM, чтобы понять, как выглядит охрана. Вот некоторые случайные заголовочные файлы LLVM, на которые я смотрел:
https://github.com/llvm-mirror/llvm/blob/master/include/llvm/CodeGen/SelectionDAG.h
https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Support/AlignOf.h
Основываясь на этих файлах, я думаю, что защита заголовка выглядит так:
#ifndef LLVM_CODEGEN_SELECTIONDAG_H
#define LLVM_CODEGEN_SELECTIONDAG_H
...
#endif
Правильный стиль для LLVM, чтобы обнаруживать и удовлетворять ваш заголовок, — это выбрать путь, используемый для включения вашего заголовка, преобразовать его в верхний регистр, заменить разделители каталогов подчеркиванием и заменить точки в расширениях файла подчеркиванием.
Например, если вы используете #include <dopelib/dopestuff/whatitisyo.h>
Ваш заголовок будет:
#ifndef DOPELIB_DOPESTUFF_WHATITISYO_H
#define DOPELIB_DOPESTUFF_WHATITISYO_H
/** Your code here. **/
#endif
Надеюсь это поможет!