8

在 clang tidy 中,检查[llvm-header-guard]查找 LLVM 样式的标头保护,但我找不到任何适当的 LLVM 标头保护样式的示例,特别是给定义的名称结构、编码标准页面没有提及任何事情。

4

3 回答 3

6

查看单元测试:

它似乎接受了常用模式的一些变化。对于名为include/llvm/ADT/foo.h约定的文件,似乎是:

#ifndef LLVM_ADT_FOO_H
#define LLVM_ADT_FOO_H
//...
#endif // LLVM_ADT_FOO_H
于 2017-05-09T22:52:08.803 回答
2

LLVM 检测并满意您的标头的正确样式是采用用于包含您的标头的路径,将其转换为大写,用下划线替换目录分隔符,并用下划线替换文件扩展名中的点。

例如,如果您使用#include <dopelib/dopestuff/whatitisyo.h>,您的标题将是:

#ifndef DOPELIB_DOPESTUFF_WHATITISYO_H
#define DOPELIB_DOPESTUFF_WHATITISYO_H

/** Your code here. **/

#endif

希望这可以帮助!

于 2018-07-03T02:06:35.627 回答
2

大概 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
于 2017-05-09T22:47:30.933 回答