Каков правильный стиль защиты заголовка LLVM?

В лягушке приборка, чек [LLVM-заголовок-охранник] ищет средства защиты заголовков в стиле LLVM, но я не могу найти примеров правильного стиля защиты заголовков в LLVM, в частности структуры имени, данного для определения, стандарты кодирования на страницах ничего не упоминается.

4

Решение

Глядя на юнит-тесты:

кажется, что он принимает несколько вариантов часто используемых шаблонов. Для файла с именем include/llvm/ADT/foo.h Конвенция выглядит так:

#ifndef LLVM_ADT_FOO_H
#define LLVM_ADT_FOO_H
//...
#endif // LLVM_ADT_FOO_H
3

Другие решения

Предположительно кодовая база 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
3

Правильный стиль для LLVM, чтобы обнаруживать и удовлетворять ваш заголовок, — это выбрать путь, используемый для включения вашего заголовка, преобразовать его в верхний регистр, заменить разделители каталогов подчеркиванием и заменить точки в расширениях файла подчеркиванием.

Например, если вы используете #include <dopelib/dopestuff/whatitisyo.h>Ваш заголовок будет:

#ifndef DOPELIB_DOPESTUFF_WHATITISYO_H
#define DOPELIB_DOPESTUFF_WHATITISYO_H

/** Your code here. **/

#endif

Надеюсь это поможет!

0