Funcție Prototip

Un prototip de funcție în C sau C++ este o declarație de funcție care nu conține un corp de funcție, dar specifică numele funcției, aritatea , tipurile de argument și tipul de date returnate. În timp ce o definiție de funcție descrie ceea ce face o funcție, un prototip de funcție poate fi considerat ca o descriere a interfeței sale.

În prototip, numele argumentelor sunt opționale, totuși, tipul trebuie specificat împreună cu orice modificatori (de exemplu, dacă este un pointer sau un argument constant).

Exemplu

Ca exemplu, luați în considerare următorul prototip de funcție:

int foo ( int n );

Acest prototip declară o funcție numită „foo” care ia un argument „n” de tip întreg și returnează un întreg. O definiție de funcție poate fi plasată oriunde în program, dar declarația este necesară doar dacă este utilizată.

Utilizare

Notificare compilatorului

Dacă o funcție nu a fost declarată anterior, iar numele ei apare într-o expresie imediat urmată de o paranteză deschisă, atunci este declarată implicit ca o funcție care returnează un rezultat de tip intși nu se presupune nimic despre argumentele sale. În acest caz, compilatorul nu va putea efectua verificarea tipului de argument și aritatea atunci când funcția este apelată cu unele argumente. Aceasta este o sursă potențială de probleme. Următorul cod ilustrează o situație în care comportamentul unei funcții declarate implicit este nedefinit.

#include <stdio.h> /* * La implementarea acestui prototip, compilatorul va emite un mesaj de eroare * în main(). Dacă este omis, atunci nu va apărea niciun mesaj de eroare. */ int foo ( int n ); /* Prototipul funcției */ int main ( void ) /* Apel de funcție */ { printf ( "%d \n " , foo ()); /* EROARE: lui foo lipsește un argument! */ returnează 0 ; } int foo ( int n ) /* Funcție de apelat */ { if ( n == 0 ) return 1 ; else return n * foo ( n - 1 ); }

Funcția „foo” așteaptă un argument de tip întreg care se află pe stivă atunci când este apelată. Dacă prototipul este omis, compilatorul nu îl poate procesa și „foo” va ajunge pe alte date de stivă (probabil adresa de retur sau valoarea unei variabile în afara intervalului ). Prin includerea unui prototip de funcție, informați compilatorul că funcția „foo” acceptă un singur argument de tip întreg și îi permiteți compilatorului să gestioneze aceste tipuri de erori.

Crearea interfețelor bibliotecii

Prin plasarea prototipurilor de funcții într-un fișier antet , puteți defini o interfață pentru .

Declarații de clasă

În C++, prototipurile de funcții sunt, de asemenea, utilizate în definițiile claselor .

Link -uri

  • Kernighan, Brian W. & Ritchie, Dennis M. (1988), Limbajul de programare C (ed. a doua), Upper Saddle River, NJ: Prentice Hall PTR, ISBN 0131103628 

Vezi și

  • Tastați semnătura