問題タブ [header-files]
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++ - cpp変換ユニットの数を減らすのは良い考えですか?
クラスがたくさんある場合、クラスごとに1つの*.hファイルと1つの*.cppファイルを使用すると、コンパイル時間が大幅に増加することがわかります。私はすでにプリコンパイル済みヘッダーとインクリメンタルリンクを使用していますが、それでもコンパイル時間は非常に長いです(はい、私はブーストを使用しています;)
だから私は次のトリックを思いついた:
- *.cppファイルをコンパイル不可として定義
- *.cxxファイルをコンパイル可能として定義
- アプリケーションモジュールごとに1つの*.cxxファイルを追加し、このモジュールのすべての*.cppファイルを#includeしました。
したがって、100以上の翻訳ユニットの代わりに、8つの翻訳ユニットしかありませんでした。コンパイル時間は4〜5倍短くなりました。
欠点は、すべての* .cppファイルを手動で含める必要があることです(ただし、リンカーが思い出させるものを含めるのを忘れた場合、メンテナンスの悪夢ではありません)。また、一部のVSIDEの便利な機能がこのスキームでは機能しません。例:Go To / MovetoImplementationなど。
だから問題は、たくさんのcpp変換ユニットを持つことが本当に唯一の本当の方法なのかということです。私のトリックは既知のパターンですか、それとも何かが足りないのでしょうか?ありがとう!
c++ - #include していないクラスへの参照の作成 (C++)
私は今、楽しみのために Box2D をいじっています。いくつかの概念を理解した後、テスト ベッド用に独自のテストを作成することにしました (Box2D には一連の例が付属しており、作成するための単純な拡張可能な Test クラスがあります)。あなた自身のテスト)。まず、他のテストの 1 つを取得し、関数シグネチャ以外のすべてを取り出し、独自のコードをいくつか挿入しました。
ただし、Box2D のライブラリには #includes がないため、コンパイルされません (ただし、ファイル エラーのみが発生し、テスト ファイルを削除すると正常にコンパイルされます)。物を移動しているときに誤ってそれらを削除したに違いないと考えましたが、他のテストファイルを確認すると、どこにも #includes が表示されていません。各ファイルは、さまざまな Box2D ヘッダー ファイルで宣言されているデータ構造と関数を使用します。これはどのようにコンパイルされますか?
たとえば、これは、コンストラクタ本体と上部のいくつかのコメントが取り除かれたパッケージ済みテストの 1 つです。
c - C プロジェクトの構造 - モジュールごとのヘッダー vs. 1 つの大きなヘッダー
私はプログラミングのキャリアの中で多くの C プロジェクトを扱ってきましたが、ヘッダー ファイルの構造は通常、次の 2 つのパターンのいずれかに分類されます。
- すべての関数プロトタイプを含む 1 つのヘッダー ファイル
- そのモジュールでのみ定義された関数のプロトタイプを含む
.h、各ファイルに1 つのファイル。.c
オプション 2 の利点は明らかです。複数のプロジェクト間でモジュールを共有するコストが安くなり、モジュール間の依存関係が見やすくなります。
しかし、オプション 1 の利点は何ですか? いくつかの利点がなければ、それほど普及しないでしょう。
この質問は C++ だけでなく C++ にも当てはまりますが、C++ プロジェクトで #1 を見たことはありません。
#defines、 s などの配置structもさまざまですが、この質問では関数プロトタイプに焦点を当てたいと思います。
python - Perl で C ヘッダー ファイルを解析するにはどうすればよいですか?
大きな構造体を含むヘッダー ファイルがあります。何らかのプログラムを使用してこの構造を読み取り、構造の各メンバーに対していくつかの操作を行い、それらを書き戻す必要があります。
たとえば、次のような構造があります
ここで、これを読んで、各メンバー変数に何らかの操作を適用し、次のような異なる順序で新しい構造を作成する必要があります。
これに使用できる Perl ライブラリは既にありますか? Perl でなくても、Python などでも構いません。
誰か助けてください!!!
c++ - ヘッダー (繰り返し関数宣言) なしで C++ コードを記述できますか?
関数宣言 (ヘッダー) を 2 回記述する必要がなく、コンパイル時のスケーラビリティ、デバッグ時の明快さ、および C++ でのプログラミング時の設計の柔軟性を維持する方法はありますか?
c++ - 別のプロジェクト(ディレクトリ)のヘッダーファイルを使用する
Visual Studio 2008を使用していますが、別のプロジェクトの特定のヘッダーファイルを使用する必要があります。C / C ++の[一般プロパティ]ペインの[追加のインクルードディレクトリ]にパスを追加しようとしましたが、プロジェクトで同じエラーが発生します
私が使用している他のすべてのcppおよびヘッダーファイルは、別のディレクトリから既存のファイルとして追加しました。一部のヘッダーではエラーが発生し、他のヘッダーではエラーが発生しません。インクルードディレクトリを追加した後、エラーに変化はありませんでした。
誰かが私を助けることができます、私はデバッグする必要があるので私は立ち往生しています...
c++ - C++インクルードファイルブラウザ
私は非常に大規模なプロジェクトを持っており、すべてが互いにインクルードしている複雑なヘッダーファイルがたくさんあります。また、依存しているサードパーティのライブラリも多数あります。混乱を正そうとしていますが、問題が発生しています。多くの場合、1つの#includeディレクティブを削除して、含まれているものが他のファイルの1つに含まれていることを確認するだけです。 。これを理解するのに役立つツールはありますか?.hファイルをクリックして、それが含まれているCPPファイル(直接または間接)と、それが含まれているパスを確認し、同様にcppファイルをクリックしてどのCPPファイルを作成するかを確認できるようにしたいと思います。 hファイルが含まれています(直接的および間接的に)。これを行うツールのことは聞いたことがありません。少しグーグルしても何も表示されませんが、多分私はそうしません。
c++ - .h ファイルからのコンパイル済みメソッドの削除とその結果
私は常に存在していたバイナリを持っています。常に存在していたクラス C もあります。クラス C に新しいメソッド M を導入する必要がありますが、そのようなメソッド M の存在を一部のユーザーに認識してもらいたいだけです。
.h ファイルからそのようなメソッドを削除すると、どのような問題が発生する可能性がありますか? そのようなアプローチは下位互換性がありますか?
編集:メソッドを見つける方法があるかどうかは実際には気にしません。自分が何をしているのかを知っている人だけが使用できるようにしたいだけです。
c - mqueue.hが見つかりません
私のアプリケーションの1つで、「mqueue.h」を使用しています。コンパイルして実行することができました。しかし、私がコードをリリースした顧客の1人は、次のような不満を言っています。
*mqueue.hが見つかりません*
しかし、彼は正確なエラーメッセージを添付していません。私のLinuxPCでは、/ usr/includeにあります。顧客がファイルを見つけられない理由を誰かが推測できますか?
そのような些細な質問をしてしまったことをお詫びします。