Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Następujący program źródłowy C składa się z dwóch plików źródłowych. To daje przegląd różnych deklaracji i możliwych definicji w programie C. W kolejnych sekcjach tej książki opisano sposób pisania tych deklaracji, definicji i inicjalizacji oraz używania słów kluczowych języka C, takich jak static
i extern
. Funkcja printf
jest zadeklarowana w pliku nagłówkowym STDIO.H języka C.
Założono, że funkcje main
i max
są w oddzielnych plikach i wykonywanie programu rozpoczyna się od funkcji main
. Niejawne funkcje użytkownika są wykonywane przed 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 zawiera prototyp dla funkcji max
. Tego rodzaju deklaracja jest czasami nazywana „deklaracją do przodu”, gdyż funkcja jest zadeklarowana przed użyciem. Definicja dla funkcji main
obejmuje wywołania do max
.
Wiersze rozpoczynające się od #define
są dyrektywami preprocesora. Dyrektywy informują preprocesor, aby zastąpił identyfikatory ONE
, TWO
, i THREE
odpowiednio numerami 1
, 2
i 3
, w całym FILE1.C. Jednakże dyrektywy nie dotyczą FILE2.C, które jest kompilowany oddzielnie, a następnie łączony z FILE1.C. Wiersz zaczynający się od #include
informuje kompilator o dołączenie pliku STDIO.H, który zawiera prototyp dla funkcji printf
. Dyrektywy preprocesora zostały wyjaśnione w dokumentacji preprocesora.
FILE1.C używa deklaracji definiujących do inicjowania zmiennych globalnych a
i b
. Zmienne lokalne c
i d
są zadeklarowane, ale nie zainicjowane. Magazyn jest przydzielany dla wszystkich zmiennych. Zmienne statyczne i zewnętrzne u
i v
, są automatycznie inicjowane z wartością 0. Dlatego tylko a
, b
, u
i v
zawierają istotne wartości, gdy są deklarowane, gdyż są inicjowanie jawnie lub niejawnie. FILE2.C zawiera definicję funkcji dla max
. Definicja spełnia wywołania do max
w FILE1.C.
Okres istnienia i widoczność identyfikatorów są omawiane w temacie Okres istnienia, Zakres, Widoczność i Łączenie. Aby uzyskać więcej informacji na temat funkcji, zobacz Funkcje.