Was bedeuten die gcc "implicit declaration..." warnings?
-
Also ist es auf den Funktionstypen "void" zurückzuführen? Die Funktion hat aber keinen Rückgabewert.
-
bzw "ob_li_vorgabe_label" hat den Datentyp GtkWidget, und das is das Ding, was ich übergebe. Deswegen muss die Funktion void sein...
-
schueler schrieb:
Also ist es auf den Funktionstypen "void" zurückzuführen? Die Funktion hat aber keinen Rückgabewert.
leg dir doch eine header-datei an, die die prototypen der funktionen enthält. die #includeste dann in allen files, die die funktionen verwenden (und in den files, die die funktionen implementieren). dann weiss der compiler immer, wie eine funktion auszusehen hat, wenn er auf einen einen aufruf stösst.
-
du musst einfach eine forward-declaration machen. Damit der Compiler den Funktionsprototypen kennt.
void foo(); // forward declaration void bar() { foo(); } void foo() { ... }
-
Vielen Dank!
-
rüdiger schrieb:
du musst einfach eine forward-declaration machen. Damit der Compiler den Funktionsprototypen kennt.
void foo(); // forward declaration void bar() { foo(); } void foo() { ... }
das hat den kleinen nachteil, falls er die funktion mal abändert aber die forward-declaration nicht anpasst, dass der compiler noch nicht mal warnt, aber das program trotzdem abraucht.
-
daher am besten mit -Wall -W -pedantic -std=c99 kompilieren
-
Wieder etwas dazu gelernt. Vielen Dank.
Eine Frage:
ist der pedantic Ausdruck "schärfer" als -Wextra?
-
-pedantic "überwacht" mehr die Einhaltung des Sprachstandards. -Wextra (bzw. -W) mit -Wall gibt eher Warnungen über potentielle Fehler aus.
Also am besten beides benutzen.
-
Na da sag ich mal dankeschön an alle!