什么是适当的LLVM头文件保护风格?

8
在clang tidy中,检查[llvm-header-guard]寻找LLVM风格的头文件保护,但我找不到任何正确的LLVM头文件保护样例,特别是给定宏定义名称的结构,coding standards页面没有提及任何内容。

1
根据链接,llvm-header-guard将修复不遵守规则的问题,所以您是否已经运行它并查看了结果?您还可以检查现有的LLVM头文件,以了解它们的样子。 - JAB
上次我检查(今天)llvm-header-guard 要求我在保护标签之前加上下划线,它建议使用类似 _HOME_USER_PRJ_DETAIL_FILENAME_HPP 的东西。而其他整洁规则告诉我不要这样做(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp),所以我必须禁用 llvm-header-guard - alfC
3个回答

6

1
您还可以通过查看HeaderGuard.cpp中的EndOfMainFile宏检查循环来了解一些逻辑。它会解析头文件保护,然后自动生成一个守卫并检查它们是否相同。如果不同,将发出警告。 - paddy

2

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

例如,如果您使用#include <dopelib/dopestuff/whatitisyo.h>,则您的头文件应为:

#ifndef DOPELIB_DOPESTUFF_WHATITISYO_H
#define DOPELIB_DOPESTUFF_WHATITISYO_H

/** Your code here. **/

#endif

希望这可以帮到你!

我发了这篇帖子,但显然 Stack Overflow 不再支持账户关联了? - monokrome

2

我正在寻找定义名称的结构,从链接中看来,它是从包含目录的路径。如果LLVM能够将其详细说明,那就太好了。 - A-n-t-h-o-n-y
这是一个非常好的答案。不仅适用于LLVM - 它是任何编译器,C或C ++的合理惯例。我认为做任何比这更复杂的事情都是极其不明智的。在我看来... - paulsm4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接