Hem Personliga finanser Hur man prototyper en funktion i C-programmering - dummies

Hur man prototyper en funktion i C-programmering - dummies

Video: C programmering svenska - 14 - Funktioner 2024

Video: C programmering svenska - 14 - Funktioner 2024
Anonim

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 andra varningen sker där funktionen prompt () bor i programmet. I källkoden står den på linje 23. Varningen säger att pro mpt () förklarades redan (vid rad 11) och att den andra användningen kan störa den första.

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.

Du kan dra slutsatsen att prototyper är en absolut nödvändighet i din C-kod. Det är inte helt sant. Du kan undvika prototyper genom att omordna funktionerna i din källkod. Så länge en funktion listas innan den används, behöver du inte en prototyp.

Ö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) >

Hur man prototyper en funktion i C-programmering - dummies

Redaktörens val

Nätverksenheter och tjänster Översikt för certifikatprov på CCENT-dummies

Nätverksenheter och tjänster Översikt för certifikatprov på CCENT-dummies

Du kan vara säker på att få några frågor om certifieringsexamen som testar din kunskap om typer av enheter och olika nätverkstjänster. Nedan följer några viktiga punkter att komma ihåg om enheter och tjänster: Nätverksenheter Hubb: Ett nav är en lag 1-enhet som används för att ansluta system tillsammans. När ...

OSI-modell för CCENT-certifieringsexamen - dummies

OSI-modell för CCENT-certifieringsexamen - dummies

Certifieringen certifierar dig kraftigt på OSI-modellen och olika protokoll och enheter som körs på varje lager av OSI-modellen. I följande tabell granskas OSI-modellen genom att ge dig en beskrivning av varje lager och exempel på protokoll och enheter som körs i varje lager. Layer Beskrivning Exempel 7. Applikation ...

OSI-modell för Cisco ICND1-certifieringsexamen - dummies

OSI-modell för Cisco ICND1-certifieringsexamen - dummies

Cisco ICND1-certifieringsexamen testa dig kraftigt på OSI modell och de olika protokoll och enheter som körs i varje lager av OSI-modellen. Följande granskar OSI-modellen genom att ge dig en beskrivning av varje lager och exempel på protokoll och enheter som körs i varje lager. Layer Beskrivning Exempel 7. Applikation ...

Redaktörens val

Hur man skalar på skifferelement i kantfilm - dummies

Hur man skalar på skifferelement i kantfilm - dummies

Skalar ett element i Adobe Edge Animate betyder i huvudsak att du kan ändra storleken på ett element samtidigt som dess proportioner hålls konsekventa om du vill. Du kan: Skalelement med verktyget Transform Skalaelement från Egenskaper-panelen Skalning med verktyget Transform Om du föredrar att använda en klicka-och-dra-metod för skalering ...

Hur man arbetar med mallar i Adobe Edge Animate - dummies

Hur man arbetar med mallar i Adobe Edge Animate - dummies

Mallar introducerades i Edge Animate 2. 0. Denna funktion tar bort nödvändigheten att återuppfinna hjulet varje gång du vill starta en ny komposition. Visst kan du alltid starta en ny komposition från en sparad fil, men Mallar gör att du kan starta ett nytt projekt som redan innehåller attribut och element som du vill ha.

Keyframes Modes in Edge Animation - dummies

Keyframes Modes in Edge Animation - dummies

Keyframe-verktyg i Edge Animate finns till höger om Play-kontrollerna. För att skapa nyckelfiler automatiskt måste du först aktivera nyckelbilder genom att klicka på den röda stoppklockans ikon. Som standard, när du startar en ny animering, är Stopwatch rött men har gråa linjer som löper genom det (som visat). Här är standardstatus för ...

Redaktörens val

Hur man tolkar figurativt språk för GED RLA-dummiesna

Hur man tolkar figurativt språk för GED RLA-dummiesna

Författare använder språk antingen bokstavligt eller figurativt . GED Reasoning Through Language Arts testet kommer att ha några frågor för att testa din förmåga att identifiera skillnaden. En NASA-vetenskapsman kan beskriva en asteroid väldigt bokstavligt: ​​består huvudsakligen av vatten, blandat med vissa stenar och mindre fasta fragment. Eller kan han eller hon skriva figurativt och beskriva ...

Hur (och var) ska schemalägga för att ta GED-dummiesna

Hur (och var) ska schemalägga för att ta GED-dummiesna

För att ta GED test, schemalägger du det baserat på tillgängliga testdatum. Varje stat eller lokalt testcenter ställer in sitt eget schema för GED-testet, vilket innebär att ditt tillstånd bestämmer hur och när du kan ta varje avsnitt av testet. Det bestämmer också hur ofta du kan återta en misslyckad ...

Hur man förbereder sig på GED RLA Extended Response - dummies

Hur man förbereder sig på GED RLA Extended Response - dummies

Uppsats för utvidgad respons på GED Reasoning Through Language Arts-testet kräver några mycket specifika färdigheter, allt från grammatik och korrekt språkanvändning till förståelse och analysförmåga. Om du någonsin har haft ett argument om vem som har det bästa laget eller vilken arbetsgivare är bättre, vet du redan hur man bedömer argument och svarar. ...