Gast
#222391
Hallo. Was bedeutet die warnung "implicit declereation of...". Die Warnung bekomm ich haufenweise wenn ich mein Programm compiliere. Aber ich kekomm keinen fehler sind alles nur warnungen. MfG
|
Anzeige
|
Warnung: implicit declereation of.
Gast
#222391
Hallo. Was bedeutet die warnung "implicit declereation of...". Die Warnung bekomm ich haufenweise wenn ich mein Programm compiliere. Aber ich kekomm keinen fehler sind alles nur warnungen. MfG "implicit declaration" - eine implizite Deklaration. Magst mal 'nen Quelltextausschnitt posten?
Gast
#222393
Also z.B. datei usw.c
datei usw.h
datei lcd.h (LIB von Peter Fleurey)
Makefile:
Gast
#222394
Achso: der compiler gibt "usw.c:130: warning: implicit declaration of function `lcd_puts'"
Gast
#222395
Ah....moment....das gleiche rpblem hab ich mit einer funktion uart_puts()....diese funktion ist allerdings als static deklariert. wiso kann ich dann überhaupt aus einer anderen Datei diese funtktionen ausführen. Ich glaub ich bring mit dem extern und static irgendwas durcheinander.
Gast
#222396
Hab den Fehler gefunden. Hatte am anfang der header datei ausversehen (lcd.h) #ifndef MAIN_H #define MAIN_H stehen. aber wie konnte der GCC dann überhaupt noch weiter machen und wiso gibt der mir nur ne warnung und keinen Fehler. werden die betroffenen funktionen einfach nicht ausgeführt oder wie?
Gast
#222397
> aber wie konnte der GCC dann überhaupt noch weiter machen und wiso > gibt der mir nur ne warnung und keinen Fehler. Weil C das so vorschreibt. > werden die betroffenen funktionen einfach nicht ausgeführt oder > wie? Doch, werden sie. Aber der Compiler führt keine Prüfung von Parametertyp und -anzahl durch.
Gast
#222398
Heisst das, ich kann die funtilktion mit falschen parametern ausführen ? Und des gibt keine feher ?
Gast
#222399
> Heisst das, ich kann die funtilktion mit falschen parametern > ausführen ? Vielleicht, vielleicht auch nicht. Du kannst es versuchen, ohne daß dein Compiler dir einen Fehler melden wird (kann). Das heißt nicht, daß es auch funktioniert. > Und des gibt keine feher ? Doch, natürlich gibt's die. Aber das kann der Compiler ja nicht prüfen, wenn du ihm nicht sagst, von welchem Typ die Argumente sein müssen. Er kann dann auch nicht die autmoatischen Typkonvertierungen ausführen, die er normalerweise ausführen würde. Der Grund, warum es das gibt, ist historischer Art. In C gab es nicht immer Prototypen. PS: Du plenkst!
Gast
#222400
Du kannst falsche Parameter übergeben, das ist überhaupt kein Problem. Wenn Du die Funktion aber in einer anderen Datei "static" definiert hast, und es sonst keine Funktion mit dem gleichen Namen gibt, bekommst Du spätestens beim Linken einen Fehler, da die Funktion nicht vorhanden ist. Antwort schreiben |
Anzeige
|