Каков правильный стиль защиты заголовка LLVM?
В clang tidy проверка [llvm-header-guard] ищет охранники заголовка стиля LLVM, но я не могу найти примеров правильного стиля защиты заголовка LLVM, в частности структуры имени, заданного для определения, страниц стандартов кодирования ничего не упоминает.
3 ответа
Глядя на юнит-тесты:
- https://github.com/llvm-mirror/clang-tools-extra/blob/master/unittests/clang-tidy/LLVMModuleTest.cpp
кажется, что он принимает несколько вариантов часто используемых шаблонов. Для файла с именем 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
Надеюсь это поможет!