在 clang tidy 中,检查[llvm-header-guard]查找 LLVM 样式的标头保护,但我找不到任何适当的 LLVM 标头保护样式的示例,特别是给定义的名称结构、编码标准页面没有提及任何事情。
问问题
7294 次
3 回答
6
查看单元测试:
- 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
于 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 回答