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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.