Modern, programe de bine scrise C fiecare funcție trebuie să fie declarate înainte de utilizare. Acest lucru se face de obicei cu ajutorul prototipului funcției. În limba originală, cu prototipul nu a fost; dar acestea au fost deja introduse în standardul S89. Cu toate prototipurile nu sunt necesare în mod oficial, dar utilizarea lor este foarte de dorit. (Cu toate acestea, în C ++ prototipuri necesare!) Toate exemplele din această carte sunt pline de prototipuri funcționale. Prototipuri da compilatorul posibilitatea de a pune în aplicare bine tipul de verificare, așa cum se face în limbi, cum ar fi Pascal. Dacă se utilizează prototipuri, compilatorul poate identifica orice transforma tipuri de argumente discutabile necesare pentru apelul funcției, în cazul în care tipul de parametrul său este diferit de tipurile de argument. Aceasta va emite un avertisment cu privire la toate aceste conversii dubioase. Compilatorul detectează, de asemenea, diferențe în numărul de argumente utilizate în funcția de apel și în numărul de parametri ai funcției.
În general, prototipul funcției trebuie să arate astfel:
Folosind numele parametrilor nu este necesară. Cu toate acestea, ele permit compilator în cazul în care există o eroare de a specifica nume pentru care un tipuri de nepotrivire, asa ca nu fi leneș pentru a specifica aceste nume - acest lucru va economisi timp mai târziu.
Programul de mai jos arată cât de valoroase sunt prototipuri funcționale. Se afișează un mesaj de eroare, care apare ca urmare a faptului că programul conține o încercare de sqr_it () suna cu întregul argument, în timp ce este cerut de un indice întreg.
Ca un prototip al funcțiilor de asemenea, poate servi ca definiția sa, în cazul în care este în program înainte de primul apel al acestei funcții. De exemplu, programul corect:
Singura funcție care nu are nevoie de un prototip - este principala (). deoarece este prima funcție să fie numit la începutul programului.
Există o diferență mică, dar importantă este faptul că este în C și C ++ funcția de prototip este procesat fără parametri. În C ++, o listă de parametri goală indică o lipsă totală de orice parametri în prototip. De exemplu,
Dacă funcția în limbajul C nu are parametri, în prototipul său în lista de parametri are doar vidul de cuvinte cheie. De exemplu, funcția de prototip f (), în forma în care ar trebui să fie în program în C:
Astfel, compilatorul știe că funcția nu are parametri, precum și orice referire la ea, în care există argumente pentru a fi tratate ca o eroare. În C ++, utilizați vidul de cuvinte cheie într-o listă de parametri goale sunt de asemenea permise, dar considerate redundante.
prototipuri funcționale permit „captură“ eroarea înainte de a începe programul. În plus, acestea interzic de asteptare funcții dintr-o nepotrivire de tipuri (de exemplu, cu argumente neadecvate), contribuind astfel la verificarea corectitudinii programului.
Și, în final, aș dori să spun următoarele: ca și în versiunile anterioare ale sintaxei prototip nu este acceptat pe deplin, atunci prototipul nu este obligatoriu în mod oficial. O astfel de abordare este necesară pentru compatibilitatea cu codul P generat chiar înainte prototipuri. Dar dacă vechiul cod C este transferat în C ++, atunci va compila acest cod, este necesar să se adauge prototipuri funcționale complet. Amintiți-vă că, deși prototipuri în C nu este obligatorie, dar ele sunt necesare în C ++. Acest lucru înseamnă că fiecare funcție în program în C ++ trebuie să aibă un prototip complet. Prin urmare, atunci când scrieți programe în C și includ prototipuri funcționale complete - asta e ceea ce cei mai mulți programatori lucrează la această limbă.
Conform abordării de modă veche, rezultatul tastați numele funcției, așa cum se arată mai jos, sunt anunțate aproape la începutul programului: