問題タブ [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エディターで自動定義...なぜですか?
EclipseがC プロジェクトで新しいファイル ( .cまたは.h#define
ファイル) を作成すると、エディターは常に次のようにファイルの先頭に を#define
自動作成します。このようなファイルの
私は他の編集者もこれを行っているのを見てきました (Codewright と SlikEdit だと思います)。#defines
問題なく削除できるので、エディターに対して何もしていないようで、それらを使用する理由が思いつきません 。なぜそこにいるのか誰か知っていますか?
c - C ヘッダー ファイルのループ
要約すると、次のヘッダーファイルがいくつかあります。
ツリー.h:
および element.h:
問題は、両者が相互に参照しているため、ツリーに要素を含める必要があり、要素にツリーを含める必要があることです。
「ツリー」構造を定義するには、要素構造が既知である必要がありますが、要素構造を定義するには、ツリー構造が既知である必要があるため、これは機能しません。
これらのタイプのループを解決するにはどうすればよいですか (これは「前方宣言」と関係があるのではないでしょうか?)。
php - PHP インクルード ファイルへの直接アクセスを防止する
インクルードとしてのみ使用するphpファイルがあります。したがって、URLを入力して直接アクセスした場合は、実行する代わりにエラーをスローしたいと思います。
基本的に、phpファイルで次のようにチェックする必要があります。
これを行う簡単な方法はありますか?
linux - gcc警告を抑制します:「警告:これは前の定義の場所です」
標準のシステムコール(open、listenなど)のラッパーのセットが必要です。これらのために私は次のようにいくつかの「#define」を持っています:
しかし、ヘッダーと関連する.cファイルをコンパイルすると、次の警告が表示されます。
/jcl_wrappers.h:114:1:警告: "open"が再定義
されました/jcl_wrappers.h:113:1:警告:これは前の定義の場所です
これらの警告を抑制するにはどうすればよいですか?
c++ - #pragma once はセーフ インクルード ガードですか?
使用時にコンパイラの最適化が行われることを読んだことがあります#pragma once
。これにより、コンパイルが高速化されます。これは非標準であるため、クロスプラットフォームの互換性の問題が発生する可能性があることを認識しています。
これは、Windows 以外のプラットフォーム (gcc) 上のほとんどの最新のコンパイラでサポートされているものですか?
プラットフォームのコンパイルの問題を回避したいが、フォールバック ガードの余分な作業も回避したい:
私は心配する必要がありますか?これにさらに精神的なエネルギーを費やす必要がありますか?
c - トリッキーなCの状況を含める
register.hとaddrmode.hという名前の他の2つのヘッダーを含むcpu.hという名前のファイルがあります。cpu_t構造体はcpu.hで定義されており、2つにはそれらの関数の必要性が含まれています。他の2つのインクルードファイルにcpu.hをインクルードしようとしましたが、何もインクルードされていません。cpu.hにインクルードガードが設定されているため、含まれていないと思います。誰かがこれをどのように解決できるか知っていますか?
javascript - Google Gears Worker に JavaScript ファイルを含める方法 (DOM アクセスなし)
Worker の .js に他の .js ファイルを含める方法を教えてください。私が見つけた Javascript のすべての「インクルード」ソリューションは、DOM にアクセスできないため、ワーカーのオプションではないタグにロードすることによってそれを行います。
あなたの950087/include-javascript-file-inside-javascript-fileから、Ajaxを使用eval()
してそれを行うことがわかります。私はそれを理解することができますが、簡単なものがあれば参照実装を教えてください。
誰かが 2007 年にhttp://code.google.com/p/gears/wiki/NewWorkerPoolFeatures?redir=1で WorkerPool.load() を提案しました 。そのようなことは今までに行われましたか?
sas - SAS マクロ インクルード ガード
C++ などの他のプログラミング言語では、インクルード ガードを使用して、同じコードが複数含まれないようにします。
C++ では次のようになります。
SAS マクロ関数の定義に包含ガードを組み込むことは理にかなっていますか? そして、それはどのように行われるべきですか?
c++ - C / C ++の「#pragmaonce」がISO標準ではないのはなぜですか?
私は現在大きなプロジェクトに取り組んでおり、警備員を含むすべてを維持することは私を夢中にさせます!手で書くのは時間の無駄です。多くの編集者はインクルードガードを生成できますが、これはあまり役に立ちません。
エディタは、ファイル名に基づいてガードシンボルを生成します。この問題は、異なるディレクトリに同じファイル名のヘッダーがある場合に発生します。それらの両方が同じインクルードガードを取得します。ガードシンボルにディレクトリ構造を含めるには、マクロのスラッシュとバックスラッシュが最適ではないため、エディタからの凝ったアプローチが必要になります。
ファイルの名前を変更する必要がある場合は、すべてのインクルードガードの名前も変更する必要があります(ifndefで、define、理想的にはendifのコメント)。迷惑。
プリプロセッサは、それらが何を意味するのか見当がつかないまま、大量のシンボルで溢れています。
それにもかかわらず、定義は一度含まれますが、コンパイラーはヘッダーが含まれるたびにヘッダーを開きます。
インクルードガードは名前空間にもテンプレートにも適合しません。実際、それらは名前空間を破壊しています!
ガードシンボルが一意にならない可能性があります。
たぶん、プログラムが単一のディレクトリに1000未満のヘッダーを含んでいたとき、それらは許容できる解決策でした。しかし、最近は?それは古く、現代のコーディング習慣とは何の関係もありません。私が最も気になるのは、この問題は#pragmaonceディレクティブによってほぼ完全に解決できるということです。なぜそれは標準ではないのですか?
c++ - インクルード ガードを追加するとビルドが壊れる
プロジェクトのファイルに #ifndef..#define..#endif を追加すると、コンパイラが失敗します。それを削除するか、他の名前を定義に入れるとすぐに、正常にコンパイルされます。何が問題なのですか?
ファイルは既に宣言されているようですが、どこにあるのかわかりません。削除するだけで結構ですが、なぜこれが起こっているのか本当に知りたいです。
そして、他のいくつかのエラー。
私は実際に Qt の例「カスタム ウィジェット プラグインの例」を使用しています。
違いは、カスタム ウィジェット (.h、.cpp、および .ui ファイル) に独自のクラスを使用していることです。
2つのインクルードを持つファイルに関係している可能性がありますが、それが例のやり方です。