C++ 叮当当当的头部防护罩式警告

C++ 叮当当当的头部防护罩式警告,c++,include,clang-tidy,C++,Include,Clang Tidy,我想在Windows10上使用clang tidy(LLVM v7.0.0)和LLVM头保护,并将CMake用于以下头文件 #ifndef _BAR_H_ #define _BAR_H_ namespace FOO { namespace BAR { class BarC { public: BarC() = default; ~BarC() = default; BarC(const BarC &iValue) = delete; const BarC &op

我想在Windows10上使用clang tidy(LLVM v7.0.0)和LLVM头保护,并将CMake用于以下头文件

#ifndef _BAR_H_
#define _BAR_H_

namespace FOO {
namespace BAR {
class BarC {
public:
  BarC() = default;
  ~BarC() = default;
  BarC(const BarC &iValue) = delete;
  const BarC &operator=(const BarC &iValue) = delete;
  BarC(BarC &&iValue) = delete;
  BarC &operator=(BarC &&iValue) = delete;
};
} // namespace BAR
} // namespace FOO

#endif // _BAR_H_
其中是C:\User\Zlatan\Project\Guard,头文件Bar.h位于\Foo\Bar\src\include\Bar\Bar.h

这会产生以下警告

警告:收割台护罩不符合首选样式 [llvm标头保护]

我读了,但没有找到正确的风格

#ifndef BAR_BAR_H
#ifndef INCLUDE_BAR_BAR_H
#ifndef SRC_INCLUDE_BAR_BAR_H
#ifndef BAR_SRC_INCLUDE_BAR_BAR_H
#ifndef FOO_BAR_SRC_INCLUDE_BAR_BAR_H
#ifndef C_USERS_ZLATAN_PROJECT_GUARD_FOO_BAR_SRC_INCLUDE_BAR_BAR_H
再次受到大家的欢迎

警告:收割台护罩不符合首选样式 [llvm标头保护]

我的用例的正确样式是什么?我是否必须在CMake中配置某些东西(已经使用CMake\u EXPORT\u COMPILE\u COMMANDS=ON)

更新

运行

cd C:/Users/Zlatan/Project/Guard/build/Release

叮叮当当-checks='llvm-header-guard'-头过滤器=.*-p=…//Foo/Bar/src/Bar.cpp

根据cmd中的建议,生成以下输出

C:\Users\Zlatan\Project\Guard\build\Release\../../Foo/Bar/src/include/Bar/Bar.h: warning: header guard does not follow preferred style [llvm-header-guard]
#ifndef BAR_BAR_H
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        C:\USERS\ZLATAN\PROJECT\GUARD\BUILD\RELEASE\__\__\FOO\BAR\SRC\INCLUDE\BAR\BAR_H
致意
Zlatan

首先看到的是,这是一个纯粹的主观问题,可能取决于
clang tidy
的设置和配置。正确的标题保护命名的构成确实是一个主观问题,但问题是“如何选择保护名称以满足clang tidy要求?”一点也不主观。不过,这是一个非dup的副本,OP已经尝试了“什么是适当的LLVM头保护样式?”(链接在Q本身中!)中的建议。请确保您在VTC之前完整阅读了问题。您错过了
类BarC
行上的结束
{
。更改该行后,我将您的警告视为
警告:标题栏未遵循首选样式[llvm标题栏]
\ifndef\u BAR\u H
`^~~~~~``BAR\u BAR\u H`i.e.clang tidy向我建议
BAR\u BAR\u H
并接受它。我使用
clang tidy-checks='llvm-*'-header filter='.'-p=../Foo/BAR/src/BAR.cc
从cmake构建目录运行clang tidy,并包含“BAR/BAR.H”in
Bar.cc