17 ottobre 2006

Sui prototipi delle funzioni

Risposta alla domanda 2 dello studente Emanuele del 14 ottobre scorso.

In C++ è necessario dichiarare le funzioni prima di utilizzarle. Questo si può fare in due modi:

  1. anteponendo il codice dell'intera funzione a tutte le funzioni che la usano (come abbiamo fatto negli esempi in aula)
  2. b) anteponendo il solo "prototipo" cioè l'intestazione della funzione.
Ad esempio, questo programma non funzionerebbe se non togliessimo il commento alla terza riga:

#include


using namespace std;
// int f();

main()
{ int x = 2;
  cout << f(x) << endl;
  system("PAUSE");

}

int f(int i)
{ return 100*i; }

Nella compilazione di un programma che invoca una funzione è necessario conoscere solo gli elementi dell'intestazione della funzione: il nome, il tipo di ritorno, il numero e i tipi dei parametri che la funzione accetta. Questo permette al compilatore di effettuare il type checking (controllo dei tipi) e di produrre il giusto codice assembly per la chiamata e il ritorno dalla funzione. Non è invece necessario conoscere il contenuto del corpo della funzione, la cui compilazione può essere effettuata separatamente.

Normalmente le intestazioni di tutte le funzioni di un file .cpp vengono raccolte in un file .h che poi viene incluso da tutti i file che vogliono usare quelle funzioni.

Nessun commento: