Video: Programmieren in C Tutorial #09 - Funktionen und Rückgabewert 2024
Was passiert, wenn man keinen Prototyp erstellt? Wie bei allem in der C-Programmierung lässt Sie der Compiler oder Linker mit einer Fehlermeldung wissen - oder das Programm läuft einfach nicht richtig. Es ist nicht das Ende der Welt - nein, nicht wie die Programmierung eines Militärroboters oder die Entwicklung eines genetischen Codes für eine neue Spezies der Venusfliegenfalle.
GRUNDFUNKTION; KEINE RÜCKGABE
#include void prompt (); / * Funktionsprototyp * / int main () {int-Schleife; Char-Eingabe [32]; Schleife = 0; while (loop ");}
Übung 1 : Ändern Sie den Quellcode von Basic Function; No Return. Kommentieren Sie den Prototyp aus Zeile 3 aus. Erstellen Sie das Ergebnis.
Compilerfehler sind wunderbare Dinge, herrlich genau und doch völlig kryptisch: Hier ist die Fehlermeldung, die von Code:: Blocks erzeugt wird, obwohl nur die relevanten Teile der Nachricht:
13 Warnung: implizite Deklaration der Funktion ' prompt '23 Warnung: widersprüchliche Typen für' prompt '13 Warnung: vorherige implizite Deklaration von' prompt 'war hier
Die erste Warnung tritt in Zeile 13 in der Quellcodedatei auf, wo die prompt () -Funktion innerhalb der Hauptdatei verwendet wird. () Der Compiler teilt Ihnen mit, dass Sie eine Funktion ohne Prototyp verwenden. Wie die Fehlermeldung besagt, deklarieren Sie implizit eine Funktion. Das ist ein No-No-, aber kein Full-On-Fehler. >
Die letzte Warnung ist ein Hinweis darauf, wo die Funktion noch einmal in Zeile 13 aufgerufen wurde.
Kurz und bündig: Der Compiler hat keine Ahnung, was mit der prompt () - Funktion los ist. Ihr Code wird kompiliert, aber das Ausführen ist riskant.
Übung
2 : Bearbeiten Sie Ihren Quellcode aus Übung 10-3. Entfernen Sie den Funktionsprototyp, der in Zeile 3 auskommentiert wurde. Ausschneiden und Einfügen (verschieben) Sie die Funktion prompt () vom unteren Rand des Quellcodes aus. Klicken Sie oben auf die Funktion main (). Speichern, erstellen und ausführen Vermeiden des Funktionsprototyps zeigt die Lösung für Übung 2.
VERMEIDEN DER FUNKTION PROTOTYP
#include / * Eingabeaufforderung anzeigen * / void prompt (void) {printf ("C: DOS>");} int main () {int-Schleife; Char-Eingabe [32]; Schleife = 0; while (Schleife <5) {prompt (); fgets (Eingabe, 31, stdin); loop = loop + 1;} return (0);}
Das Schreiben der main () - Funktion, gefolgt von anderen Funktionen, ermöglicht eine bessere Lesbarkeit, obwohl es Ihnen freisteht, Ihre eigenen Funktionen zur Vermeidung von Prototypen einzusetzen.Und wenn Sie das nicht tun, denken Sie daran, dass andere Programmierer es so machen können, also seien Sie nicht überrascht, wenn Sie es sehen.
Compiler-Fehlermeldungen in Code:: Blöcke haben Klammern hinter ihnen. Die Klammerkommentare beziehen sich auf den
-Switch oder die herkömmliche Befehlszeilenoption, die das Überprüfen auf eine bestimmte Warnung ermöglicht. Zum Beispiel wurden die Fehlermeldungen aus Übung 1 vollständig gelesen: 11 Warnung: implizite Deklaration der Funktion 'prompt' (-Wimplicit-function-declaration) 20 Warnung: widersprüchliche Typen für 'prompt' (standardmäßig aktiviert) >