Programma di esempioExample Program

Il seguente programma di origine C è costituito da due file di origine.The following C source program consists of two source files. Viene fornita una panoramica di alcune delle varie dichiarazioni e definizioni possibili in un programma C.It gives an overview of some of the various declarations and definitions possible in a C program. Nelle sezioni successive di questo libro viene descritto come scrivere tali dichiarazioni, definizioni e inizializzazioni e come usare le parole chiave di C come static e extern.Later sections in this book describe how to write these declarations, definitions, and initializations, and how to use C keywords such as static and extern. La funzione printf viene dichiarata nel file di intestazione C STDIO.H.The printf function is declared in the C header file STDIO.H.

Si presume che le funzioni main e max siano in file separati e l'esecuzione del programma inizia con la funzione main.The main and max functions are assumed to be in separate files, and execution of the program begins with the main function. Nessuna funzione esplicita dell'utente viene eseguita prima di main.No explicit user functions are executed before 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 contiene il prototipo della funzione max.FILE1.C contains the prototype for the max function. Questo tipo di dichiarazione viene talvolta chiamata una "dichiarazione con prototipo" perché la funzione viene dichiarata prima di essere utilizzata.This kind of declaration is sometimes called a "forward declaration" because the function is declared before it is used. La definizione della funzione main include chiamate a max.The definition for the main function includes calls to max.

Le righe che iniziano con #define sono direttive per il preprocessore.The lines beginning with #define are preprocessor directives. Queste direttive indicano al preprocessore di sostituire gli identificatori ONE, TWO e THREE con i numeri 1, 2 e 3, rispettivamente, in FILE1.C.These directives tell the preprocessor to replace the identifiers ONE, TWO, and THREE with the numbers 1, 2, and 3, respectively, throughout FILE1.C. Tuttavia, le direttive non si applicano a FILE2.C che viene compilata separatamente, quindi collegata a FILE1.C.However, the directives do not apply to FILE2.C, which is compiled separately and then linked with FILE1.C. La riga che inizia con #include indica al compilatore di includere il file STDIO.H che contiene il prototipo della funzione printf.The line beginning with #include tells the compiler to include the file STDIO.H, which contains the prototype for the printf function. Le direttive per il preprocessore vengono spiegate in Riferimenti al preprocessore.Preprocessor directives are explained in the Preprocessor Reference.

FILE1.C utilizza dichiarazioni di definizione per inizializzare le variabili globali a e b.FILE1.C uses defining declarations to initialize the global variables a and b. Le variabili locali c e d vengono dichiarate ma non vengono inizializzate.The local variables c and d are declared but not initialized. Lo spazio di archiviazione viene allocato per tutte queste variabili.Storage is allocated for all these variables. Le variabili statiche ed esterne, u e v, vengono inizializzate automaticamente a 0.The static and external variables, u and v, are automatically initialized to 0. Di conseguenza, solo a, b, u e v contengono valori significativi una volta dichiarati, in quanto vengono inizializzati in modo esplicito o implicito.Therefore only a, b, u, and v contain meaningful values when declared because they are initialized, either explicitly or implicitly. FILE2.C contiene la definizione di funzione per max.FILE2.C contains the function definition for max. Questa definizione soddisfa le chiamate a max in FILE1.C.This definition satisfies the calls to max in FILE1.C.

La durata e la visibilità degli identificatori vengono illustrate in Durata, ambito, visibilità e collegamento.The lifetime and visibility of identifiers are discussed in Lifetime, Scope, Visibility, and Linkage. Per altre informazioni sulle funzioni, vedere Funzioni.For more information on functions, see Functions.

Vedere ancheSee Also

File e programmi di origineSource Files and Source Programs