C++ヘッダファイル注意ポイント&コンパイルエラーよくあるエラー

2833 ワード

fei種chang原lan因duoのため、今まで大きなプロジェクトを書いたことがなく、毎回プロジェクトにはたった2つの3つのファイルしかありませんでしたが、最近プロジェクトを書こうと思ったときに、ヘッダファイル同士の基本的な要求さえはっきりしていないことに気づきました.ただ、ヘッダファイルでコンパイルに失敗した経験がある印象があるので、わざわざ関連内容を調べて、ここに整理しました
注意点
CSDN-C++ヘッダファイルから修正注意点を含む
方法
変数、関数、構造、クラスなどを含む記号を参照する前に、宣言または定義されていることを確認します.
  • の最も基本的な原則は、クラスのヘッダファイルに他のヘッダファイルを含まないほうがいいです.すなわち,クラスを設計する際にできるだけクラスの独立性を保ち,他のクラスや関数ライブラリにできるだけ依存しないようにし,クラスの宣言を他のクラスに依存しないようにする.
  • インプリメンテーションで他のクラスが使用されている場合は、そのクラスのインプリメンテーションファイルに使用されているクラスライブラリまたは関数ライブラリのヘッダファイルのみを含めることができます.
  • クラスの宣言が他のクラスライブラリまたは関数ライブラリに使用される場合、宣言で他のクラスまたは構造のポインタ参照または関数参照が参照される場合は、クラスの宣言の前にクラスが使用するクラス名または関数名を宣言する順方向参照を使用できます.
  • 実際には、1つのクラスが他の多くのクラスポインタまたは構造ポインタまたは関数名を使用する場合、上記の方法を採用することができるが、使用するすべてのクラスと方法を宣言するのは面倒である
  • .
  • クラス宣言で他のクラスのインスタンスが参照されている場合、そのクラスの宣言ヘッダファイルで参照されているクラスライブラリまたは関数ライブラリのヘッダファイルのみが参照されます.

  • ヘッダファイルに含まれる順序
    大規模なエンジニアリング設計では、1つのクラスが既存のクラスライブラリや関数ライブラリを多く使用する必要があります.1つのクラスで使用されるすべてのクラスライブラリヘッダファイルをクラスの定義ヘッダファイルに追加するのは面倒で、よく使われるヘッダファイルを共通のヘッダファイルに追加することです.
    ヘッダファイルにも依存関係があり、シーケンスエラーが含まれている場合、コンパイルエラーが発生する可能性があります.ヘッダファイルの含める順序は、最も特殊なものから一般的なものまでです.
    #include "     "
    #include "      "
    #include "         "
    #include "      "
    #include "       "
    #include "C++    "
    #include "C    "
    

    解析できない外部シンボルの一般的な理由
    CSDN-から各種の解決できない外部の記号の問題の相応の解決策を修正します
  • libファイルが正しくない、例えば64ビットのコンパイル構成で、結果として32ビットのlibパケットが使用する.
  • クラス宣言のみが書かれていますが、実装クラスはまだ書かれていません.呼び出し時に
  • を解析できません.
  • 宣言と定義が統一されていないため、リンクが一致せず、
  • を解析できません.
  • は、プロジェクトプロパティページのリンクのコマンドラインオプションに対応するクラスパッケージを追加していません.
  • は、c++にディレクトリとライブラリを含むディレクトリに対応するクラスパッケージパス
  • を加える.
  • 試験工程における被測定ファイルディレクトリは、被測定クラスを含むcpp定義ファイル
  • を必要とする場合がある.
  • ICEインタフェーステストの場合、被験ファイルに関連するcppファイルが含まれていないため、解析できない可能性があります.また、TestSuite_ProjectRun.hファイルにIProjectRunを含める必要がある.hヘッダファイル、および関連するヘッダファイル(例).
  • import関連の解析不能な内容は、リンクの依存項目に対応するダイナミックライブラリ
  • を加えることによって解決する.