Funktion nicht deklariert -> Warnung durch Compiler?

Gast #3012584
Lesenswert?

Hallo,

ich hatte den Fall, dass in der *.h Datei vergessen wurde eine Funktion 
zu deklarieren. In einer anderen Datei wurde sie aufgerufen.

Der C-Compiler nimmt in diesem Fall einfach klamm heimlich an, dass es 
eine
1
int funktion(int xy);
sein würde und meckert nicht weiter.

Gibt es irgend eine Möglichkeit (ein Flag zB) damit gcc in diesem Fall 
eine Warnung oder Fehlermeldung macht?
#3013488
Lesenswert?

brechbunkt schrieb:

> Der C-Compiler nimmt in diesem Fall einfach klamm heimlich an, dass es
> eine
>
1
int funktion(int xy);

nicht ganz, der Compiler nimmt an, dass die Funktion als
1
int funktion();
 deklariert wurde.

> Gibt es irgend eine Möglichkeit (ein Flag zB) damit gcc in diesem Fall
> eine Warnung oder Fehlermeldung macht?

-Wall macht genau das, weil es -Wimplicit-function-declaration 
impliziert. Wenn dann keine Warnungen kommen, dann hast du es anderswo 
verbockt.

In diesem Fall solltest du a) deine Compilereinstellungen überprüfen ob 
dein Modul wirklich Warnungen produzieren kann. "-Wall" nutzt z.B. 
nichts, wenn irgendwo anders noch "-w" steht um alle Warnung zu 
verhindern oder irgendeine Headerdatei #pragmas enthält um Warnungen zu 
unterdrücken.

b) Mal testhalber eine Funktion "blabla(123)" im Code aufrufen und 
schauen ob es dafür eine Warnung gibt. Falls ja, dann ist der fehlende 
Prototyp für deine Funktion vielleicht irgendwo anders.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren