什么是正确的 LLVM header guard 样式?
What is proper LLVM header guard style?
在 clang tidy 中,检查 [llvm-header-guard] looks for LLVM style header guards, but I can't find any examples of proper LLVM header guard style, specifically the structure of the name given to the define, the coding standards 页没有提及任何内容。
推测 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
根据这些文件,我认为 header guard 看起来像这样:
#ifndef LLVM_CODEGEN_SELECTIONDAG_H
#define LLVM_CODEGEN_SELECTIONDAG_H
...
#endif
查看单元测试:
- 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 检测并满意您的 header 的正确样式是采用用于包含您的 header 的路径,将其转换为大写,用下划线替换目录分隔符,然后替换带下划线的文件扩展名中的点。
例如,如果您使用 #include <dopelib/dopestuff/whatitisyo.h>
,您的 header 将是:
#ifndef DOPELIB_DOPESTUFF_WHATITISYO_H
#define DOPELIB_DOPESTUFF_WHATITISYO_H
/** Your code here. **/
#endif
希望对您有所帮助!
在 clang tidy 中,检查 [llvm-header-guard] looks for LLVM style header guards, but I can't find any examples of proper LLVM header guard style, specifically the structure of the name given to the define, the coding standards 页没有提及任何内容。
推测 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
根据这些文件,我认为 header guard 看起来像这样:
#ifndef LLVM_CODEGEN_SELECTIONDAG_H
#define LLVM_CODEGEN_SELECTIONDAG_H
...
#endif
查看单元测试:
- 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 检测并满意您的 header 的正确样式是采用用于包含您的 header 的路径,将其转换为大写,用下划线替换目录分隔符,然后替换带下划线的文件扩展名中的点。
例如,如果您使用 #include <dopelib/dopestuff/whatitisyo.h>
,您的 header 将是:
#ifndef DOPELIB_DOPESTUFF_WHATITISYO_H
#define DOPELIB_DOPESTUFF_WHATITISYO_H
/** Your code here. **/
#endif
希望对您有所帮助!