2011-02-26 11 views
33

私はCの関数を2つの別々の.cファイルに書き、IDE(コードブロック)を使ってすべてをコンパイルします。Cプログラムを複数のファイルに分割する方法は?

これをコードブロックでどのように設定するのですか?

1つの.cファイルの関数を他のファイルから呼び出すにはどうすればよいですか?

+0

あなたのIDEは何ですか? – Simon

+3

これはどのような曖昧さがありうるかわかりません。まだ何か試しましたか?あなたはC言語を知っていますか?ヘッダが何であるか知っていますか? –

+6

あなたはこのことに気づいていない可能性があります:cは通常、コンパイルされています。* "ファイルを使用するためにファイルを呼び出す" *は、解釈された言語感覚を持っています。コンパイルされた言語のワークフローは、インタープリター言語のワークフローとは若干異なります(ただし、多くのIDEが違いを隠しています)。 – dmckee

答えて

88

質問は非常に曖昧です、私はあなたが "様々な.cファイル内の機能をどのように分離し、IDEがすべてを一緒にコンパイルするのか"を意味すると思います。私が間違っている場合(例えば、「.cのファイルで定義された関数をIDE自体から使用する方法」など)、コメントに私に教えてください。私は自分の答えを更新/削除してうれしいです。一般的に

、次の2つの別々の.cのファイル(たとえば、A.cB.c)で関数を定義し、対応するヘッダにそのプロトタイプを置く必要があります(A.hB.hinclude guardsを覚えておいてください)。

.cファイルでは、別の.cで定義された機能を使用する必要があるときはいつでも、対応するヘッダーは#includeになります。あなたは正常に機能を使用することができます。

すべて.c.hのファイルをプロジェクトに追加する必要があります。 IDEがコンパイルする必要があるかどうかを尋ねる場合は、.cのみをコンパイルにマークする必要があります。

クイック例:

Functions.h

#ifndef FUNCTIONS_H_INCLUDED 
#define FUNCTIONS_H_INCLUDED 
/* ^^ these are the include guards */ 

/* Prototypes for the functions */ 
/* Sums two ints */ 
int Sum(int a, int b); 

#endif 

Functions.c

/* In general it's good to include also the header of the current .c, 
    to avoid repeating the prototypes */ 
#include "Functions.h" 

int Sum(int a, int b) 
{ 
    return a+b; 
} 

Main.c

#include "stdio.h" 
/* To use the functions defined in Functions.c I need to #include Functions.h */ 
#include "Functions.h" 

int main(void) 
{ 
    int a, b; 
    printf("Insert two numbers: "); 
    if(scanf("%d %d", &a, &b)!=2) 
    { 
     fputs("Invalid input", stderr); 
     return 1; 
    } 
    printf("%d + %d = %d", a, b, Sum(a, b)); 
    return 0; 
} 
+0

私はコードブロックを使用しています – amin

+0

あなたは正しいです – amin

+0

もし私が.cファイルを使用したいのなら、それはヘッダファイル(.h)にする必要があります! – amin

関連する問題