Bedeutung einer Warnung/Anmerkung
-
Hallo,
kann mir jemand sagen, was diese Warnung, die beim Compilieren mittels Makefile auftritt, grundsätzlich bedeutet?
train_data.c:503: Warnung: In Konflikt stehende Typen für »set_to_zero« train_data.c:446: Anmerkung: Vorherige implizite Deklaration von »set_to_zero« war hier
Danke!
Bemerkung:
set_to_zero() ist eine Funktion, die in Zeile 503 deklariert ist. Deren Ihalt ist denke ich hierfür nicht relevant.void set_to_zero(struct net *irgendeinzeiger, int position)
In Zeile 446 wird diese Funktion einfach aufgerufen:
if (mode==0) set_to_zero(irgendwas, pos);
-
Du hast in Zeile 446 die Funktion set_to_zero benutzt ohne sie vorher zu deklarieren. Der Compiler hat dann einfach geguckt wie der Funktionaufruf aussieht und hat sich eine passende Deklaration ausgedacht. Diese Deklaration passt aber nicht zu dem was du später in Zeile 503 deklarierst (ich vermute mal der Compiler wird sich als Rückgabetyp int ausgedacht haben, du hast void). Es ist noch nicht so schlimm, dass das Programm deshalb nicht übersetzt werden könnte, daher nur die Warnung, aber es ist vielleicht nicht das was du willst. Hier dürfte es keinen Unterschied machen.
Es ist jedoch sehr schlechter Stil sich auf die impliziten Deklarationen zu verlassen. Deklarier deine Funktionen vor ihrer ersten Benutzung, so wie es sich gehört.
-
Danke!!