Video: C programmering svenska - 14 - Funktioner 2024
Vad händer när du inte prototyper? Som med något i C-programmering, när du går upp, kan kompilatorn eller länken låta dig veta med ett felmeddelande - eller programmet körs inte korrekt. Det är inte världens ände - nej, inte som att programmera en militärrobot eller utforma genetisk kod för en ny art av Venus flytrap.
GRUNDFUNKTION; INGA RETUR
#include void prompt (); / * funktion prototyp * / int main () {int loop; char ingång [32]; slinga = 0; medan (loop ");}
Motion 1 : Ändra källkoden från Basic Function, No Return. Kommentera prototypen från rad 3. Bygg resultatet.
Kompilatorfel är underbara saker, härligt noggranna men ändå fullständigt kryptiska. Här visas felmeddelandet som genereras av Kod:: Blocks, men endast de relevanta delarna av meddelandet:
13 Varning: implicit funktionskänsla ' snabbvarning "23 Varning: motstridiga typer för" prompt "13 Varning: tidigare implicit deklaration av" prompt "var här
Den första varningen sker vid rad 13 i källkodsfilen, där snabbfunktionen () används inom huvuddelen () -funktionen. Kompilatorn berättar att du använder en funktion utan prototyp. Som felmeddelandet säger, förklarar du implicit en funktion. Det är ett nej, men inte ett fullständigt fel. >
Den slutliga varningen är en referens till var funktionen heter, igen vid rad 13.
För att uttrycka det kortfattat: Kompilatorn har ingen aning om vad som händer med funktionen prompt (). Din kod compilerar, men kör den är riskabel.
Övning
2 : Redigera källkoden från Exercise 10-3. Ta bort funktionsprototypen som kommenterades på Linje 3. Klipp och klistra (flytta) funktionen prompt () från botten av källkoden Listning till toppen ovanför huvudfunktionen (). Spara, bygg och kör. Undvik funktionsprototypen visar lösningen för övning 2.
UNDVIKA FUNKTIONSPROTOTYPEN
#include / * Display prompt * / void prompt (void) {printf ("C: DOS>");} int main () {int loop; char ingång [32]; slinga = 0; medan (slinga <5) {prompt (); fgets (input, 31, stdin); loop = loop + 1;} returnera (0);}
Skriva huvudfunktionen () först, följt av andra funktioner möjliggör bättre läsbarhet, även om du är fri att lägga egna funktioner först för att undvika prototyper.Och om du inte gör det, kom ihåg att andra programmerare kan göra det på det sättet, så bli inte förvånad när du ser den.
Kompilatorns felmeddelanden i kod:: Block har parentes efter dem. De parentesiska kommentarerna hänvisar till
switch , eller det traditionella kommandoradsalternativet, som möjliggör kontroll av en viss varning. Till exempel läser felmeddelandena från Exercise 1 fullständigt: 11 Varning: implicit deklaration av funktionen "prompt" (-Wimplicit-function-deklaration) 20 Varning: motstridiga typer för "prompt" (aktiverad som standard) >