タグ付けされた質問 「header-files」


9
ヘッダーファイルと.cppファイルがあるのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 C ++にヘッダーファイルと.cppファイルがあるのはなぜですか?
484 c++  header-files 

13
cppファイルを含めず、代わりにヘッダーを使用する必要があるのはなぜですか?
それで、私は最初のC ++プログラミングの課題を終え、成績を受け取りました。しかし、グレーディングによると、私はの成績を失いましたincluding cpp files instead of compiling and linking them。それが何を意味するのか私はあまり明確ではありません。 私のコードを振り返ってみると、クラスのヘッダーファイルを作成しないことを選択しましたが、cppファイルですべてを行いました(ヘッダーファイルがなくても正常に動作するように見えました...)。採点者が私が '#include "mycppfile.cpp";'と書いたことを意味していたと思います。一部のファイルで。 #includecppファイルを作成する理由は次のとおりです。-ヘッダーファイルに入るはずのものがすべてcppファイルにあるため、ヘッダーファイルのように振る舞った-monkey-see-monkeyのやり方で、他のファイルを見たヘッダーファイルが#includeファイルに含まれていたので、cppファイルにも同じことを行いました。 それで、私は正確に何をしましたか、そしてそれはなぜ悪いのですか?
146 c++  header-files 

2
#pragmaはC ++ 11標準の一部でしたか?
従来、C ++での複数のヘッダーのインクルードを回避する標準的で移植可能な方法は、マクロガードスキーム#ifndef - #define - #endifとも呼ばれるプリコンパイラディレクティブスキームを使用することでした(現在のコードスニペットを参照)。 #ifndef MY_HEADER_HPP #define MY_HEADER_HPP ... #endif ただし、ほとんどの実装/コンパイラ(下の図を参照)では、と呼ばれるマクロガードスキームと同じ目的で使用できる、より「エレガントな」代替手段があります#pragma once。#pragma onceマクロガードスキームと比較して、コードの削減、名前の衝突の回避、場合によってはコンパイル速度の向上など、いくつかの利点があります。 調査を行ったところ、#pragma onceほとんどすべての既知のコンパイラーでディレクティブがサポートされています#pragma onceが、ディレクティブがC ++ 11標準の一部であるかどうかがわかりません。 質問: 誰か#pragma onceがC ++ 11標準の一部であるかどうかを誰かが明確にできますか? C ++ 11標準の一部ではない場合、それを今後のリリース(C ++ 14以降など)に含める予定はありますか? また、誰かがいずれかの手法(つまり、マクロガードと#pragma once)を使用する際の利点/欠点についてさらに詳しく説明できるとよいでしょう。

5
x86 SIMD組み込みのヘッダーファイル
異なるx86 SIMD命令セット拡張(MMX、SSE、AVXなど)の組み込み機能を提供するヘッダーファイルはどれですか。そのようなリストをオンラインで見つけることは不可能のようです。私が間違っている場合は修正してください。

9
C ++ヘッダーでの「名前空間の使用」
すべてのc ++コースでは、すべての教師が常にsのusing namespace std;直後にファイルを配置#includeしてい.hます。そのヘッダーを別のプログラムに含めることにより、おそらくそれを実現、意図、または希望せずに名前空間をプログラムにインポートすることになるので、これは危険に思えます(ヘッダーの組み込みは非常に深くネストされる可能性があります)。 だから私の質問は二重です:using namespaceヘッダーファイルで使用してはいけないことは正しいのでしょうか? //header.h using namespace std { . . . } 同じラインに沿ってもう一つ質問:万一のヘッダーファイル#includeすべてのヘッダーそれが対応だと.cppファイルのニーズを、のみヘッダー定義のために必要であるとしましょう.cppファイル#include休息、またはそれとして必要なしと宣言すべてをextern? 質問の背後にある理由は上記と同じ.hです。 また、私が正しい場合、これはよくある間違いですか?実際のプログラミングとそこにある「実際の」プロジェクトのことです。 ありがとうございました。

10
Makefile、ヘッダーの依存関係
ルールを持つメイクファイルがあるとしましょう %.o: %.c gcc -Wall -Iinclude ... ヘッダーファイルが変更されるたびに* .oを再構築してほしい。依存関係のリストを作成するのではなく、ヘッダーファイルが/include変更されるたびに、ディレクトリ内のすべてのオブジェクトを再構築する必要があります。 これに対応するためにルールを変更する良い方法は考えられません。私は提案を受け入れます。ヘッダーのリストをハードコーディングする必要がない場合のボーナスポイント


5
C ++:名前空間—ヘッダーファイルとソースファイルで正しく使用する方法は?
インターフェイス宣言ファイル(*.hまたは*.hpp)とその実装ファイル(*.cpp)の2つのソースファイルのペアについて考えてみます。 ましょ*.hファイルは、以下のようになります: namespace MyNamespace { class MyClass { public: int foo(); }; } ソースファイルで名前空間を使用するための2つの異なる方法を見てきました。 *.cpp 練習#1を示す: #include "MyClass.h" using namespace MyNamespace; int MyClass::foo() { ... } *.cpp 練習#2を示す: #include "MyClass.h" namespace MyNamespace { int MyClass::foo() { ... } } 私の質問:これら2つのプラクティスの間に違いはあり、一方が他方よりも優れていると見なされますか?

3
.hファイルと.mファイルの@interface定義の違い
通常は使用します @interface interface_name : parent_class <delegates> { ...... } @end .hファイルと.mファイルのメソッドは、.hファイルで宣言された変数のプロパティを合成します。 ただし、一部のコードでは、この@interface ..... @endメソッドは.mファイルにも保持されます。どういう意味ですか?それらの違いは何ですか? また、.mファイルで定義されているインターフェイスファイルのゲッターとセッターについても説明します。 前もって感謝します
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.