web-dev-qa-db-ja.com

Cプログラムを複数のファイルに分割する方法は?

C関数を2つの別個の.cファイルに記述し、IDE(Code :: Blocks)を使用してすべてを一緒にコンパイルします。

Code :: Blocksでどのように設定しますか?

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

38
amin

一般に、2つの別個の.cファイル(たとえば、A.cおよびB.c)で関数を定義し、それらのプロトタイプを対応するヘッダー(A.hB.hガードを含める )を覚えておいてください。

.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;
}
106
Matteo Italia