0

私は次の基本構造を持つCでコードを書いています:

パートA:メインモジュールの開始/初期化、さまざまなサブモジュールの呼び出し、およびサブモジュールからの結果の最終的なコンパイル。

パートB:サブモジュールの実際の実行。

Now, part A has its own main.c and main.h file
Part B has three modules: 
sub1.c/sub1.h
sub2.c/sub2.h
sub3.c/sub3.h

サブモジュールで使用される一般的な変数と関数はたくさんあります。すべてのサブモジュールに#includeして、すべての共通関数/変数を使用できる共通モジュールが欲しいのですが。(common.cおよびcommon.h)

これで、共通関数について、common.hで宣言してから、common.cで定義すると、すべてのサブモジュールで直接使用できるようになります。しかし、私が「共通」にしたい共通のデータ変数/メンバーもたくさんあります。

すべてのサブモジュールで直接使用できるように、これを行う最も効率的な方法は何でしょうか?

C ++では、common.hに追加するだけで、common.hを含む任意のファイルで使用できますが、cでは少し異なると思います。誰かが違いを説明するのを手伝ってもらえますか?

ありがとう

4

1 に答える 1

0

CまたはC++の場合:

で行く必要があり.hます:

// declaration, means it's defined somewhere else
// can declare it as many times as you want
extern int yourVariable;

.c変数を使用したいすべてのオブジェクト(またはファイルのコンパイルプロセス中に生成された中間ファイルのように.cpp、OOPのオブジェクトではない)は、変数について知る必要があります(したがって、どこかに定義があります)。

.c/に入る必要があります.cpp

int yourVariable = 3; // definition, should only define it once
int yourVariable2; // also a definition

externキーワードは関数のオプションです。

int square(int num); // function declaration (.h)
extern int square(int num); // same as above
int square(int num) { return num*num; } // function definition (.c)

C ++の場合:

で行く必要があり.hます:

// this is a declaration
class yourClass
{
  int yourVariable;
}

で行く必要があり.cppます:

int yourClass::yourVariable = 3;

私は間違っている可能性がありますが、この点でCとC ++の違いを認識していません(C ++にクラスがあることを除いて)。

于 2013-02-04T14:31:23.480 に答える