.cppがかなり大きくなっているので、管理を簡単にするために、いくつかのファイルに分割したいと思います。ただし、グローバルは多数あるため、さまざまなファイル間で多数のextern宣言を管理し続けることは避けたいと思います。複数の.cppファイルを単一のファイルとして機能させる方法はありますか?本質的には、コンパイラが除算を認識せずにコードを除算する方法が必要です。
3 に答える
複数の.cppファイルを単一のファイルとして機能させる方法はありますか?
はい。それがの定義です#include
。ファイルを作成するときは、ディレクティブ#include
の代わりにインクルードされたファイルをテキストで置き換えます。#include
したがって、含まれる複数のファイルが連携して1つの変換ユニットを形成します。
あなたの場合、ファイルをいくつかのビットに切り刻んでください。これを正確に実行してください。テキストの行を追加したり、損なったりしないでください。ヘッダーガードなどを追加しないでください。ほぼすべての便利な場所でファイルを壊す可能性があります。制限事項は次のとおりです。ブレークはコメント内でも文字列内でも発生してはならず、論理行の終わりで発生している必要があります。
慣例に従って、新しく作成された部分ファイルに名前を付けます。これらは完全な形式の翻訳単位ではないため、名前を付けないでください*.cpp
。これらは適切なヘッダーファイルではないため、名前を付けないでください*.h
。むしろ、それらは部分的に完全な翻訳単位です。おそらくあなたはそれらに名前を付けることができます*.pcpp
。
ベース名については、元のファイル名を選択し、末尾に連番の接尾辞を付けます: MyProg01.pcpp
、MyProg02.pcpp
など。
最後に、元のファイルを一連の#include
ステートメントに置き換えます。
#include "MyProg01.pcpp"
#include "MyProg02.pcpp"
#include "MyProg03.pcpp"
もちろん、コンパイラが認識する1つのマスターファイルにさまざまなCPPファイルを#includeすることができます。ただし、これは非常に悪い考えであり、ファイルを適切にリファクタリングするよりもはるかにひどい頭痛の種になります。
多くのcppファイルで同じグローバルのセットを宣言できますが、コンパイラが各ファイルをコンパイルするときにそれぞれの個別のインスタンスを取得し、それらが結合されるとリンクに失敗します。
唯一の答えは、すべてのグローバルを独自のファイルに入れてから、それらをextern宣言を含むヘッダーファイルにカットアンドペーストすることです(これは簡単に自動化できますが、矢印キーを使用してそれらの前に「extern」を貼り付けるだけです。迅速かつ簡単)。
すべてをリファクタリングすることはできますが、多くの場合、努力する価値はありません(他の理由で何かを変更する必要がある場合を除く)。
ファイルを分割してから、コンパイラを使用して新しいファイルごとに必要なグローバルを通知し、それらだけを各ファイルに直接再導入して、真のグローバルを個別に保持することができます。
これを行いたくない場合は、cppファイルを#includeするだけです。