2017-05-09 29 views
1

clang tidyでは、チェック[llvm-header-guard]はLLVMスタイルのヘッダーガードを探しますが、適切なLLVMヘッダーガードスタイルの例は見つかりません。具体的には、定義に与えられた名前の構造です。coding standardsページには何も言及されません。適切なLLVMヘッダーガードスタイルは何ですか?

+0

リンクによると、 'LLVM-ヘッダ-guard'が付着していないものを修正するので、あなたはそれを実行し、結果を見て持っているのだろうか?また、既存のLLVMヘッダーを調べて、それらの外観を確認することもできます。 – JAB

答えて

3

テスト:

よく使用されるパターンにはいくつかのバリエーションがあります。名前のファイルinclude/llvm/ADT/foo.h規則があると思われる場合:

#ifndef LLVM_ADT_FOO_H 
#define LLVM_ADT_FOO_H 
//... 
#endif // LLVM_ADT_FOO_H 
+1

また、[HeaderGuard.cpp](https://github.com/llvm-mirror/clang-tools-extra/)の 'EndOfMainFile'のマクロチェックループを見て少し論理を拾うことができます。 blob/master/clang-tidy/utils/HeaderGuard.cpp)。そこで、ヘッダーガードを解析し、ガードを自動生成し、それらが同一であることを確認します。そうでなければ、それは警告です。 – paddy

3

おそらく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 
+0

私はdefineの名前の構造を探しています。リンクから、includeディレクトリからのパスのように見えます。それがLLVMによって綴られているのを見てうれしいです。 –

+0

これは非常に良い答えです。 LLVMだけでなく、* ANY *コンパイラ、CまたはC++のための合理的な規則です。私は、これより複雑なことをするのは非常に賢明ではないと思う。 IMO ... – paulsm4

関連する問題