問題タブ [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++ - ヘッダー ファイルのインクルード ループと複数の定義
私は、「bh」などutil.h
で使用される関数を含み、互いに定義されたいくつかのクラスにアクセスするために互いにインクルードします。a.h
a.h
b.h
私の問題は、 のmultiple definition
エラーが発生したことですfoo
。どのように?
a.h
問題は、 includesutil.h
とb.h
、 and b.h
includesutil.h
がもう一度あることだと思ったので、複数の def エラーが発生しました。しかし、私はガードutil.h
を書いたので、それは意味をなさないようです.#ifndef/#define
誰でも私を助けてくれます、ありがとう。
c++ - ガード スタイル、C++ を含める
いくつかのクラス定義を含む .h ファイルがあります。このファイルで C++ のインクルード ガードを使用したいと考えています。しかし、インクルード ガードのどの使用方法が適切/正しいと見なされるのか疑問に思っていました。
すべてを守る 1 つのガード
または複数の個別のガード。
c++ - Extern "C" を使用した C++ で重複シンボル エラーが発生する
C++ クラスのヘッダー ファイル内で extern "C" 関数を使用しようとしています。
コンパイルすると、エラーが発生し続けます
適切な警備員がいると思っていましたが、なぜこれが起こっているのかわかりません。どんな助けでも大歓迎です。
ここにヘッダーファイルがあります。
編集: David がすぐに指摘したように、extern GLHandler *currentInstance はエラーを修正しました。
c++ - #include ガードと #pragma once を引き続き使用する必要がありますか?
http://en.wikipedia.org/wiki/Pragma_once
これらすべてのコンパイラがサポートしている場合でも、インクルード ガードを使用する必要があり#pragma once
ますか?
スタック オーバーフローに関する多くの回答では、互換性のために両方を使用するように言われていますが、それがまだ正しいかどうかはわかりません。現在サポートされていないコンパイラは#pragma once
どれですか?
両方を使用することが、widley が採用される前の単なる推奨事項だったのか、それとも両方の方法を使用する十分な理由があるのかはわかりません。
使用#pragma once
するだけで問題が発生する例はありますか?
c++ - C++ ヘッダーの再定義 (ws2ipdef.h)
私は自分のプロジェクトで多くのインクルードを使用しています (ただし、すべてのヘッダー ファイルは次のようなヘッダー ガードを使用します)。
そして今、ws2ipdef.h(windows.hに自動的に含まれています)からこのエラーが発生しています:
Interface.h (他のいくつかのファイルに含まれています) では、次を使用します。
この問題またはヒントを解決するにはどうすればよいですか?
どうも
c - C - #include と複数の typedef
gcc を使用して Eclipse で組み込み C プログラムを作成していますが、特定の問題を回避する方法がわかりません。インクルード ガードで保護されているヘッダー ファイルに typedef があります。この typedef を複数のヘッダーで使用しているため、他のヘッダーに含める必要がありますが、コンパイルしようとすると、何をしても、ヘッダーの 1 つが typedef を認識できず、不明な型名が表示されます。
これが問題を示していると思います:
ヘッダーああ:
ヘッダー bh:
ヘッダーチャンネル:
これは、2 番目にコンパイルされたヘッダーが typedef を認識できないため、常に「unknown type name 'USBD_Status'」というエラーが発生するようです。ah からインクルード ガードを削除すると、USBD_Status が再宣言されているという苦情が発生します。
編集: すべてのインクルード パス、すべてのインクルード、すべてのファイル名、およびすべてのインクルード ガードを再確認しました - 重複やタイプミスはありません。
c++ - インクルード ガードが再帰的なインクルードと複数のシンボル定義を防止しないのはなぜですか?
include guardsに関する 2 つの一般的な質問:
最初の質問:
相互の再帰的インクルードからヘッダー ファイルを保護するインクルード ガードがないのはなぜですか? 次のようなものを書くたびに、明らかに存在する存在しないシンボルに関するエラー、またはさらに奇妙な構文エラーが発生し続けます。
「ああ」
"bh"
「main.cpp」
"main.cpp" のコンパイル中にエラーが発生するのはなぜですか? 問題を解決するにはどうすればよいですか?
2 番目の質問:
複数の定義を防ぐガードを含めないのはなぜですか? たとえば、私のプロジェクトに同じヘッダーを含む 2 つのファイルが含まれている場合、リンカは、いくつかのシンボルが複数回定義されていると不平を言うことがあります。例えば:
「header.h」
「ソース1.cpp」
「source2.cpp」
なぜこうなった?問題を解決するにはどうすればよいですか?
c++ - gnu coreutils を使用して C++ のインクルード ガード タイプミスを見つける
以下は、C++ インクルード ガードのタイプミスです。両方とも読む必要があります_MYFILE_H_
。
GNU coreutils (grep、awk など) を使用して、このようなタイプミスがないか、一連のヘッダー ファイルを検索する方法を教えてください。
c++ - #繰り返しを含める
Contextinclude
: 2 つの句を持つ 1 つのクラスがあります。
問題:VarRecord.h
とCompressor.h
インクルードの両方が同じファイルGlobalConstants.h
であるため、明らかにコンパイラが文句を言います。