次の方法で共有


サンプル プログラム

次の C ソース プログラムは 2 つのソース ファイルで構成されています。 C プログラムで使用できるさまざまな宣言と定義の一部について、概要を示します。 後のセクションでは、これらの宣言、定義、および初期化を記述する方法と、 staticextern のような C のキーワードを使用する方法について説明します。 printf 関数は C ヘッダー ファイル STDIO.H. で宣言されます。

main 関数と max 関数は、別のファイルにあると解釈され、プログラムの実行は main 関数で始まります。 明示的なユーザー関数は main の前には実行されません。

/*****************************************************************
                    FILE1.C - main function
*****************************************************************/

#define ONE     1
#define TWO     2
#define THREE   3
#include <stdio.h>

int a = 1;                       // Defining declarations
int b = 2;                       //  of external variables

extern int max( int a, int b );  // Function prototype

int main()                       // Function definition
{                                //  for main function
    int c;                       // Definitions for
    int d;                       //  two uninitialized
                                 //  local variables

    extern int u;                // Referencing declaration
                                 //  of external variable
                                 //  defined elsewhere
    static int v;                // Definition of variable
                                 //  with continuous lifetime

    int w = ONE, x = TWO, y = THREE;
    int z = 0;

    z = max( x, y );             // Executable statements
    w = max( z, w );
    printf_s( "%d %d\n", z, w );
    return 0;
}

/****************************************************************
            FILE2.C - definition of max function
****************************************************************/

int max( int a, int b )          // Note formal parameters are
                                 //  included in function header
{
    if( a > b )
        return( a );
    else
        return( b );
}

FILE1.C には max 関数のプロトタイプが含まれます。 この種類の宣言は、関数が使用前に宣言されるため、"前方宣言" と呼ばれることがあります。 main 関数の定義は max への呼び出しを含みます。

#define で始まる行は、プリプロセッサ ディレクティブです。 これらのディレクティブは、識別子 ONETWO、および THREE をそれぞれ数 12、および 3 に FILE1.C 全体で置き換えるようにプリプロセッサに指示します。 ただし、ディレクティブは、個別にコンパイルされて FILE1.C にリンクされる FILE2.C には適用されません。 #include で始まる行は、printf 関数のプロトタイプを含む STDIO.H ファイルを含めるようにコンパイラに指示します。 プリプロセッサ ディレクティブについては、「プリプロセッサ リファレンス」を参照してください。

FILE1.C では、宣言の定義を使用して、グローバル変数の ab を初期化しています。 ローカル変数の cd が宣言されていますが、初期化されていません。 これらの変数すべてに対して、ストレージが割り当てられます。 静的変数および外部変数の uv は自動的に 0 に初期化されます。 したがって、abu、および v にのみ宣言時に意味のある値が含まれます。明示的または暗黙的に初期化されるためです。 FILE2.C には max 関数の定義が含まれます。 この定義は、FILE1.C の max への呼び出しを満たします。

識別子の有効期間と可視性については、「有効期間、スコープ、可視性、およびリンケージ」で説明します。 関数の詳細については、「関数」を参照してください。

関連項目

ソース ファイルとソース プログラム