問題タブ [include-guards]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ネーミング インクルード ガード
C++ インクルード ガードは通常どのように命名されますか? 私はこれをよく見る傾向があります:
しかし、それはあまり直感的ではないと思います。ファイル名を見ないと、何のFOO_H
ためにそこにあり、その名前が何を指しているのかを判断するのは困難です。
ベストプラクティスと見なされるものは何ですか?
c++ - C++ の有効な用途には、インクルード ガードの他にガードが含まれますか?
この質問は、C++ インクルード ガードの命名規則について議論するいくつかの質問の 1 つです。その質問をしている人は、この命名規則について次のように考えています。
は、それ自体を理解すると少し直感的ではなく (どういうFOO_H
意味ですか?)、私は同意する傾向があります。
他の人は、より良い衝突回避のためにさらにものを追加する必要がなければ ( のようにPROJECTNAME_FOO_H_SDFFGH69876GF
)、FOO_H
その目的がそのコンテキストから明らかであるため、名前は問題ありません (つまり、同じ名前のファイルの先頭にあり、インクルード ガードであることを明確にします)。
FOO_H
複数のファイルが含まれないようにすることだけが目的であれば、これを購入することもできFOO_H
ますが、ファイルの他の場所に必要な条件はありますか? 条件付きコンパイルは正当な理由になると思います。その場合、次のような名前を付けるとFOO_H_INCLUDED
より明確になります。
これに似た単純な使用法はありますか、それともインクルードガードの転用を避けるべきですか?
c++ - 複数のファイルへの複数の包含
小さなゲームを作っています。
BattleRecord.h で:
Character.h で:
BattleRecord.h で:
ここでの問題は、私の Character.h と BattleRecord.h が互いに含める必要があることです。これにより、間違いなく複数の再定義の問題が発生します。したがって、次を追加して Character.h で前方宣言を使用しました。
問題は解決しました。しかしその後、GUI.h は戦闘を報告するためにもう一度 BattleRecord.h を必要とするため、BattleRecord.h を GUI.h に含める必要があります。ViewStat 関数に渡すために Character.h も含める必要があります。エラーが発生し、このピオントまでこれに固執しました。
c++ - インクルード ガードは、名前空間間でも一意にする必要がありますか?
A と B など、2 つの名前空間で同じクラス名を使用しています。異なる名前空間でクラスを宣言する際に、インクルード ガードを一意にする必要がありますか?
同じインクルード ガードを持ち、異なる名前空間を宣言する 2 つのファイル名 AFile.h (異なるディレクトリ内) が存在できないということですか?
c++ - ガードを含めたくない状況はありますか?
インクルードガードが存在する理由を知っていますが、それ#pragma once
は標準ではないため、すべてのコンパイラなどでサポートされていません.
私の質問は別の種類のものです:
それらを持っていない合理的な理由はありますか?理論的には、別の場所に含めることを意図したファイルにインクルード ガードを提供しないことの利点があるという状況にまだ遭遇していません。それらを持たないことの実際の利点がある例を誰かが持っていますか?
私が尋ねる理由-私には、あなたがいつもそれらを使用しているので、それらはかなり冗長に見えます. の動作は#pragma once
文字通りすべてに自動的に適用されるだけです.
c++ - 内側と外側の pragma once の違いにはガードが含まれていますか?
#pragma once
インクルード ガードの外側と内側の配置に違いはありますか?
ケース 1:
ケース 2:
コードで両方(プラグマとヘッダーガード)を組み合わせることにしたので、どちらか一方(ケース1またはケース2)を好む特別なケースがあるかどうか、好奇心から思っています。
編集:
皆さんは私の質問を誤解していると思います...pragma once
プラグマワンス対ヘッダーガードではなく、の場所について質問しています。
iphone - gcc / xCode-ファイルが存在しない場合にエラー(または警告)をトリガーしない#include?
これは可能ですか?
基本的に、私がやりたいことは次のようなものです。
また、header.hが存在しない場合、コンパイラーは単純にその陽気な方法を続行します。
c++ - ヘッダー ファイルでインクルード ガードを使用しない場合は?
インクルード ガードをいつ使用するかは誰もが知っていますが、プロジェクトでそれを使用しない場合はいつでしょうか?
最近、ミックス コンパイル (CUDA + GCC) を使用するプロジェクトを見ましたが、1 つのヘッダー ファイル (CUDA ファイル) が意図的にインクルード ガードなしで残されています。私はちょうどそれについて興味があります。
c++ - コードガードが失敗する
次のファイルを取得します。
ああ
a.cpp
bh
b.cpp
main.cpp
これは単なる例ですが、私は本当にこの問題を抱えています:
なぜ、どのように解決するのですか?
c++ - コード ガードが失敗し、文字列リテラルからテンプレートが作成される
文字列リテラルをテンプレート引数として渡す唯一の方法は、前に宣言することです。
ファイルああ
ファイルa.cpp
main.cpp
そして私は得ました:
EL
私は外部として宣言することはできず、 a.cpp
. ソリューション?