私のファイルは
// main.c
#include "add.c"
int main(void) {
int result = add(5,6);
printf("%d\n", result);
}
そして
// add.c
int add(int a, int b) {
return a + b;
}
use #include "ClasseAusiliaria.c"
[山括弧(<>)を使用しない]
および .h
拡張子でファイルを保存することをお勧めします 同じディレクトリ/フォルダに保存します。
#include "ClasseAusiliaria.h"
Main.c
を次のように変更します
#include <stdlib.h>
#include <stdio.h>
#include "ClasseAusiliaria.h"
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}
ClasseAusiliaria.h
を作成します
extern int addizione(int a, int b);
次に、コードをコンパイルして実行し、次の出力を得ました
11
ヘッダーファイルでint add(int a, int b);
(セミコロンに注意)を宣言し、ファイルを両方のファイルに含める必要があります。 Main.cに含めると、コンパイラーに関数の呼び出し方法が通知されます。 2番目のファイルに含めると、宣言が有効であることを確認できます(宣言と実装が一致しなかった場合、コンパイラは文句を言います)。
次に、両方の* .cファイルを1つのプロジェクトにコンパイルする必要があります。詳細はコンパイラに依存します。
ここには多くの素晴らしい貢献がありますが、それでも私に追加してみましょう。
最初に気づいたのは、add()という関数を作成することをメインファイルに約束しなかったことです。このカウントは、メインファイルで次のように行われています。
int add(int a, int b);
メイン関数の前に、その方法でメイン関数が追加関数を認識し、その実行可能コードを探します。だから本質的にあなたのファイルは
Main.c
int add(int a, int b);
int main(void) {
int result = add(5,6);
printf("%d\n", result);
}
および// add.c
int add(int a, int b) {
return a + b;
}
ファイルclassAusiliaria.h
を作成し、そこにメソッドシグネチャを提供します。
.cファイルを含める代わりに、この.hファイルを含めます。
.cファイルを含めることができます。論理的には問題ありませんが、標準に従って、関数の実装を隠し、バイナリを提供するために、ヘッダーとソースファイルのテクニックが使用されます。ソースファイルに実装がある場合。プロジェクトを外部に販売する場合は、ヘッダーとバイナリ(libsおよびdll)を出荷するだけで、関数実装の背後にメインロジックを隠します。
ここでの問題は、インクルードが発生するファイルと同じディレクトリ内にあるファイルをインクルードするため、<>の代わりに ""を使用する必要があることです。 .cファイルと.hファイルの両方に共通です
write main.c like this -
caution : while linking both main.0 and ClasseAusiliaria.o should be
available to linker.
#include <stdlib.h>
#include <stdio.h>
extern int addizione(int a, int b)
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}
他のcファイルにcファイルを含めないでください。代わりに、呼び出したい関数が宣言されているヘッダーファイルを作成します。そのように:ClasseAusiliaria.hファイル:
int addizione(int a, int b); // this tells the compiler that there is a function defined and the linker will sort the right adress to call out.
Main.cファイルに、新しく作成されたヘッダーファイルを含めることができます。
#include <stdlib.h>
#include <stdio.h>
#include <ClasseAusiliaria.h>
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}