2012-05-09 7 views
-1

私はプログラマではありません。質問が不十分な場合は申し訳ありません。文脈から外れていれば私に適切なリンクを指示します...ファイルに含めるファイル

私はヘッダーファイル "file.h"と私はいくつかの関数を宣言している。 "file.c"に定義を与えることは別として、ヘッダファイルがfile.h(対応するすべての関数を含む)のままになるように、さまざまな.cファイルをさまざまな関数で使用できるようにする方法はあります。 私はコードブロックを使用しています。

任意のヘルプは高く評価され....

答えて

1

、はい、できます、here is an articleそれについて語っています。

あなたはheader.hというタイトルのヘッダファイルを持っているし、それはあなたが単にこのheader.hで、次の を行う必要があり、別のライブラリからfunction.cに含まれる機能と同様に含めることを望む場合:

#include "header.c" 
#include <other.h> 

をここで、other.hは、他の機能を含む機能的なヘッダーファイルです。


N.B:答えのこの部分は、OPが削除されたことを質問のセクションを参照します。

あなたの関数の宣言がgetNodeのように、実装しようとしているとおりに一致しないようです。 (void関数として作成されますが、整数パラメータで呼び出しています)。あなたの問題を解決するには、まずそれを並べ替えることから始めます。

+0

コンセプトを理解できません...私のプログラムのメインファイル – Imposter

+0

どのコンセプトですか?あなたは2つの質問を持っていた...:P – gkiar

+0

私はメインで私はheader.hにdiff()関数を持っているheader.hを含んでいて、diff()プロトタイプを与えてdiff()プロトタイプを与えたdiff()私は私の目標を達成することができますどのように私の目標を達成することができます – Imposter

3

NB: this part of the answer refers to the source code the OP deleted from his question...

あなたは、単一のintの引数を取り、nodeへのポインタを返すようgetNodeを宣言する。しかし、getNodeを引数を取らずにポインタをnodeに戻すと定義します。

あなたの宣言または定義を改善する必要があるのいずれか、およびgetNodeの使用状況を考えると、私はあなたの定義を改善する:新しい質問については

node* getNode(int data) 
{ 
    node* temp=new node; 
    temp->data = data; // <- use the argument 
    temp->left=NULL; 
    temp->right==NULL; 
    temp->next==NULL; 
    return temp; 
} 

、ヘッダファイルは、元のちょうど固まりですプリプロセッサのおかげで含めることができます。

では、これを使用してグローバル変数、関数、およびデータ構造を宣言できます。ただし、これらの宣言が意味を成し、アプリケーションの残りの部分と同期していることを確認する必要があります。

+0

Qtn 1のコピー貼り間違いはいかがでしたか... – Imposter

0

Q1:はい、機能ごとに異なる実装ファイルを使用してリンクしてください。

実際、これはコードを別々のコンパイル単位に分割する良い方法です。関連するコードを簡単に見つけることができるだけでなく、関数の一部が参照されない場合に実行可能ファイルのサイズを減らすこともできます。

Q2:引数を持つtreelib.hで定義されているあなたはgetNodeする機能getNode(int)ではなく、むしろgetNode()

1

あなたの定義を定義していません。 treelib.cppでのgetNodeの実装ではありません。だから、treelib.hでは "node * getNode(int);"と定義されています。 treelib.cppでは "node * getNode()"として実装しています。 2つは同じではありません。 treenode.cppのバージョンをヘッダの定義と一致するように変更してください。うまくいくでしょう。

1

ヘッダーファイルは、通常、構造/クラス、定数、関数プロトタイプ、その種のものを宣言するために使用されます。しかし、には、ヘッダーファイルとソースファイルの間に関係がありません。には、あなたが与えた意味以外のものがあります。 「ソースファイルごとに1つのヘッダファイル」などのようなものはありません。

あなたのコードを自由に分割することができます。 file.hは必ずしもどこにでもfile.cppファイルがあるはずであるという意味ではありません。それはただの大会です。あなたの最初の質問のためにあなたの問題について

、あなただけ間違って(あなたはあなたのソースファイル内のパラメータが欠落している。)あなたの機能を実装している

関連する問題