Video: Developer Diaries: Wheeled Vehicles - Part 1 2024
Cosa succede quando non si prototipo? Come con qualsiasi cosa nella programmazione in C, quando ci si alza, il compilatore o il linker ti consente di sapere con un messaggio di errore - o il programma non funziona correttamente. Non è la fine del mondo - no, non è come programmare un robot militare o progettare un codice genetico per una nuova specie di Venere acchiappamosche.
FUNZIONE DI BASE; NO RITORNO
#include void prompt (); / * function prototype * / int main () {loop int; input char [32]; loop = 0; while (loop ");}
Exercise 1 : Modifica il codice sorgente da Basic Function; No Return. Commenta il prototipo dalla riga 3. Costruisci il risultato.
Gli errori del compilatore sono cose meravigliose, deliziosamente accurate ma del tutto criptiche. Ecco il messaggio di errore generato dal codice: Blocchi, sebbene solo le parti rilevanti del messaggio:
13 Avviso: dichiarazione implicita della funzione ' prompt '23 Avviso: tipi in conflitto per' prompt '13 Avviso: la dichiarazione implicita precedente di' prompt 'era qui
Il primo avviso si verifica alla riga 13 nel file del codice sorgente, dove la funzione prompt () viene utilizzata all'interno del principale () Il compilatore ti sta dicendo che stai usando una funzione senza un prototipo.Come dice il messaggio di errore, stai dichiarando implicitamente una funzione.Questo è un no-no, ma non un errore on-on. >
L'avvertimento finale è un riferimento a dove è stata chiamata la funzione, sempre alla riga 13.
Per dirla in breve: il compilatore non ha idea di cosa succede con la funzione prompt (). Il tuo codice viene compilato, ma eseguirlo è rischioso.
Esercizio
2 : Modifica il codice sorgente dall'esercizio 10-3. Rimuovi il prototipo di funzione che è stato commentato alla riga 3. Taglia e incolla (sposta) la funzione prompt () dalla parte inferiore dell'elenco del codice sorgente in alto, sopra la funzione main (). Salva, crea ed esegui. Evitare la funzione Prototipo mostra la soluzione per l'esercizio 2.
EVITARE IL PROTOTIPO DELLE FUNZIONI
#include / * Visualizza prompt * / void prompt (void) {printf ("C: DOS>");} int main () {loop int; input char [32]; loop = 0; while (loop <5) {prompt (); fgets (input, 31, stdin); loop = loop + 1;} return (0);}
Scrivere prima la funzione main (), seguito da altre funzioni consente una migliore leggibilità, anche se sei libero di mettere le tue funzioni prima di tutto per evitare la prototipazione.E se non lo fai, tieni presente che altri programmatori potrebbero farlo in quel modo, quindi non essere sorpreso quando lo vedi.
Messaggi di errore del compilatore nel codice: I blocchi hanno parentesi dopo di essi. I commenti parentetici si riferiscono all'interruttore, o all'opzione da riga di comando tradizionale, che consente di verificare un avviso particolare. Ad esempio, i messaggi di errore dell'Esercizio 1 sono stati letti integralmente: 11 Avviso: dichiarazione implicita della funzione 'prompt' (-Wimplicit-function-declaration) 20 Avviso: tipi in conflitto per 'prompt' (abilitato per impostazione predefinita) >