Video: Arduino GSM Modülü Kümes Sıcaklık Projesi || FireBeetle & Micro Solar Power Manager 2024
Hva skjer når du ikke prototype? Som med alt i C-programmering, når du går opp, kan kompilatoren eller linkeren du vite med en feilmelding - eller programmet kjøres bare ikke riktig. Det er ikke verdens ende - nei, ikke som å programmere en militærrobot eller utforme genetisk kode for en ny art av Venus flytrap.
GRUNNFUNKSJON; INGEN RETURN
#include void prompt (); / * funksjon prototype * / int main () {int loop; char-inngang [32]; løkke = 0; mens (loop);}
Øvelse 1 : Endre kildekoden fra grunnleggende funksjon, ingen retur. Skriv ut prototypen fra linje 3. Bygg resultatet.
Kompilatorfeil er fantastiske ting, herlig nøyaktig, men helt kryptisk. Her er feilmeldingen generert av Kode:: Blokker, men bare de relevante delene av meldingen:
13 Advarsel: spørre "23 Advarsel: motstridende typer for" prompt "13 Advarsel: tidligere implisitt deklarasjon av" prompt "var her
Den første advarselen skjer på linje 13 i kildekoden filen, der funksjonen prompt () brukes inne i hovedmenyen () -funksjonen. Kompilatoren forteller deg at du bruker en funksjon uten prototype. Som feilmeldingen sier, erklærer du implisitt en funksjon. Det er en nei, men ikke en fullstendig feil. >
Den endelige advarselen er en referanse tilbake til hvor funksjonen ble ringt, igjen på linje 13.
For å si det kortfattet: Kompilatoren har ingen anelse om hva som skjer med funksjonen prompt (). Koden din kompilerer, men kjører den er risikabelt.
Øvelse
2 : Rediger kildekoden fra øvelse 10-3. Fjern funksjonsprototypen som ble kommentert ved Linje 3. Klipp og lim inn (flytt) prompt () -funksjonen fra bunnen av kildekoden Listing to the top, over main () -funksjonen. Lagre, bygge og kjøre. Unngå funksjonens prototype viser løsningen for øvelse 2.
UNNGÅ FUNKSJONSPROTOTYPEN
#include / * Display prompt * / void prompt (void) {printf ("C: DOS" "; int main () {int loop; char-inngang [32]; løkke = 0; mens (loop <5) {prompt (); fgets (inngang, 31, stdin); loop = loop + 1;} return (0);}
Skriver hovedfunksjonen () først, etterfulgt av andre funksjoner, gir bedre lesbarhet, selv om du er fri til å sette dine egne funksjoner først for å unngå prototyping.Og hvis du ikke gjør det, husk at andre programmerere kan gjøre det på den måten, så vær ikke overrasket når du ser den.
Kompilatorfeilmeldinger i kode:: Blokker har parenteser etter dem. De parentetiske kommentarene refererer til
bryteren , eller det tradisjonelle kommandolinjealternativet, som gjør det mulig å sjekke en bestemt advarsel. F.eks. Leses feilmeldingene fra øvelse 1: 11 Advarsel: implisitt deklarasjon av funksjonen "prompt" (-Forklaring av funksjonsdeklarasjon) 20 Advarsel: motstridende typer for "prompt" (aktivert som standard) >