問題タブ [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++ - C++: 2 つのクラスを再宣言せずに、ヘッダーが互いに呼び出しずに呼び出すにはどうすればよいですか?
これには少し問題があります。B のオブジェクトをインスタンス化するクラス A と、A のオブジェクトをインスタンス化する B があります。これはまったく可能ですか? これをそれぞれのヘッダーに追加してみました
しかし、ヘッダーが含まれる最大数に達する無限のヘッダーループに私を留めている場合、明らかに一方が他方を呼び出しており、もう一方がそれを呼び出しています。これを達成する方法はありますか?
編集: わかりました、これは良い答えのように思えますが、B には確実にコンストラクターがあるにもかかわらず、A はコンストラクターを持っていないと不平を言っています。私はそれを理解することはできません。
c++ - インクルード ヘッダー ファイル スタイル - C++
次のディレクトリ構造を持つプロジェクトがあります。
したがって、ファイル say foo.cppin にsrc/module1は、次のようなものを含める必要があります。
これは面倒で書きにくいように見えます。書き込みが次のように含まれていることがわかりました
root/includeコンパイルがきれいに見えるときにインクルードファイルの検索パスを提供します。ただし、このスタイルに欠点があるかどうかはわかりません。
どちらが好きですか、なぜですか? また、上記の方法でファイルを整理する際に問題はありますか?
c++ - ヘッダーのみのライブラリが受け入れられるのはいつですか?
個人的には、ヘッダーのみのライブラリが非常に気に入っていますが、過度のインライン化によりコードが肥大化するという主張があります (コンパイル時間が長くなるという他の明らかな問題も同様です)。
私は、これらの主張(肥大化に関するもの)にどれだけの真実があるのか 疑問に思っていました.
さらに、コストは「正当化」されていますか? (もちろん、純粋にまたはほとんどがテンプレートで実装されたライブラリである場合など、やむを得ない場合もありますが、実際に利用可能な選択肢がある場合にもっと興味があります。)
このようなことに関しては、厳格なルールやガイドラインなどはないことはわかっていますが、この問題について他の人がどう思うかを感じようとしているだけです.
PSはい、これは非常に漠然とした主観的な質問です。私は認識しているので、そのようにタグ付けしました。
c - マクロで関数の戻り値を確認する
製品のカスタマイズされたモジュールから呼び出すことができるコア関数があります。
function_coreヘッダーファイルにマクロがある整数を返すコア関数です。
func_custカスタマイズしたコード内で呼び出し
ています。しかし、コアの内部では、別のコア関数を再度呼び出します。
そのため、カスタマイズしたコードにすべての引数を入れることはできません。
多くのCファイルでこのfunc_cust関数呼び出しを呼び出しています。
関数の戻り値を確認する必要があります。x を返すfunction_core場合function_coreは、戻り値を 0 に変更します。そうしないと、同じ戻り値が返されます。
たとえば、次のようなマクロを定義したいとします。
これは可能ですか?
より具体的には、これが私が必要とするものです!!
これはエラーになります:
"test_fun.c"、12.3 行目: 1506-045 (S) 未宣言の識別子 sum_1。
私はこのマクロ sum_2 で遊ぶためのアクセス権しか持っていません。
c - Cのヘッダーファイルのポイントは何ですか?
重複の可能性:
[C]ソースファイルごとのヘッダー。
C ++では、なぜヘッダーファイルとcppファイルがあるのですか?
C ++-.hファイルには何を入れる必要がありますか?
ヘッダーファイルがCに存在する唯一の理由は、開発者が使用可能な関数と、それらが取ることができる引数をすばやく確認できるようにするためですか?それともコンパイラと関係がありますか?
なぜ他の言語がこの方法を使用していないのですか?それは私だけですか、それとも2セットの関数定義があると、メンテナンスが増え、エラーの余地が増えるだけだと思われますか?または、ヘッダーファイルについて知っているのは、すべてのC開発者が知っておくべきことですか?
python - Cythonを使用したCヘッダーのマジックナンバー/フラグへのアクセス
Cythonでアクセスしたいいくつかの標準Cライブラリには、たくさんのフラグがあります。Cythonのドキュメントには、必要なヘッダーの部分を複製する必要があると記載されています。関数の定義に関しては、これで問題ありません。それらは通常どこにでも複製され、ドキュメントが含まれます。しかし、これらすべてのマジックナンバーはどうですか?
を呼び出したい場合はmmap、いつでも関数定義を見つけて.pxdファイルに貼り付けることができます。
PROT_READしかし、それを呼び出すには、などのような大量のフラグが必要MAP_ANONYMOUSです。これには少なくとも2つの問題があります。
まず、これらの数値が定義されている場所を正確に特定するのは面倒な作業です。実際、私はむしろ.cファイルを作成し、必要な値をprintfしたいと思います。次のような特定のフラグの値を見つけるためのより良い方法はありますPROT_READか?
第二に、これらの数値はどれくらい安定していますか?必要なすべての値を抽出し、それらをCythonソースにハードコーディングした後、別のプラットフォームでのコンパイルが切り替わった可能性はどのくらいPROT_READありPROT_EXECますか?
良い方法や適切な方法がないと答えても、聞きたいです。何かを見逃していないことがわかっている限り、何かが面倒であることをいつでも受け入れることができます。
c - 変数の定義はヘッダーファイルに含める必要がありますか?
Cとコンパイルプロセス に関する私の非常に基本的な知識は最近錆びています。次の質問に対する答えを見つけようとしていましたが、コンパイル、リンク、および前処理フェーズの基本を接続できませんでした。グーグルでのクイック検索もあまり役に立たなかった。それで、私は知識の究極の源に来ることに決めました:)
私は知っています:変数は.hファイルで定義されるべきではありません。そこで宣言しても大丈夫です。
理由:ヘッダーファイルが複数の場所からインクルードされる可能性があるため、変数を複数回再定義します(リンカーはエラーを出します)。
考えられる回避策:ヘッダーファイルでヘッダーガードを使用し、その中で変数を定義します。
それは本当に解決策ですか:いいえ。ヘッダーガードは前処理フェーズ用であるためです。これは、この部分がすでに含まれていることをコンパイラーに通知し、再度含まないようにすることです。しかし、複数定義のエラーは、コンパイルのかなり後にリンカー部分で発生します。
このすべてが、前処理とリンクがどのように機能するかについて私を混乱させました。ヘッダーガードシンボルが定義されている場合、前処理にはコードが含まれないと思いました。その場合、変数問題の複数の定義も解決されるべきではありませんか?
これらの前処理ディレクティブにより、コンパイルプロセスがヘッダーガードの下でシンボルを再定義する必要がなくなりますが、リンカーはシンボルの複数の定義を取得します。
c++ - cコンソールウィンドウのタイトルを設定する方法
Cでコンソールウィンドウのタイトルを設定するにはどうすればよいですか?
これはLinuxでのみ機能し、Windowsでは機能しません。
「クロスプラットフォーム」ソリューションを知っている人はいますか?(もちろんそうではありませんsystem ( title=blah ))
doxygen - プライベートヘッダーをソースブラウザに表示されないように除外するにはどうすればよいですか?
クライアントがヘッダーファイルを表示できるようにするために設定SOURCE_BROWSER = NOしました。VERBATIM_HEADERS = YESただし、特定のヘッダーのみを表示できるようにしたいのです。これを行うための最良の方法はどのようになりますか。
助けてくれてありがとう!
編集:これは機能しているように見えますが、他のより良い方法に興味があります。
c - C の #define をシェル変数としてエクスポート
私のプロジェクトでは、システムのさまざまなディレクトリ、ファイル、およびその他のコンポーネントへの多数のパスが、それらを必要とするすべてのものに含まれるファイルに#definesとして保存されます。filenames.hこれは、コンパイルによって生成されたさまざまなバイナリすべてに対して適切に機能しますが、プロジェクトには、同じパスを使用するいくつかのシェル スクリプトも含まれています。現在これは、パスが変更filenames.hされると、実行ファイルのセットを編集して再コンパイルし、新しいパスを理解する必要があることを意味しますが、各シェル スクリプトを手動で編集する必要があります。
したがって、問題は、#definesをシェル変数にする方法です。たとえばfilenames.sh、他のスクリプトから呼び出されるスクリプトを生成して初期化します。たとえば、次のようになります。
作成します
もちろん、それを作成するCプログラムを作成することもできます (標準出力に出力して、シェルでバッククォートで実行することもできます)。実行される C ハーフシェルのようなものはcpp、適切な出力、またはそれに似たものを作成します。