Forum: Mikrocontroller und Digitale Elektronik Funktion nicht deklariert -> Warnung durch Compiler?


von brechbunkt (Gast)


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?

von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

müsste das nicht bei -Wall dabei sein ?

lg
 Timm

von brechbunkt (Gast)


Lesenswert?

-Wall habe ich schon drin. Gibt aber leider keine Warnungen dafür aus.

von Marco M. (marco_m)


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.

von Peter D. (peda)


Lesenswert?

Also meiner (WINAVR) meckert:
1
main.c: In function 'main':
2
main.c:5: warning: implicit declaration of function 'test'

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.