Trotz nicht deklarierter Funktionen wird kompiliert

05/08/2009 - 15:23 von Thomas Barth | Report spam
Hallo,
war es schon immer möglich, Programme zu kompilieren mit
Funktionsaufrufen, die noch gar nicht deklariert sind? Der verwendete
GCC Compiler zeigt mir die unbekannten Funktionen nicht an, ignoriert
sie scheinbar einfach. Bei der Erstellung des neuen Programmes kopiere
ich u.a. Source-Abschnitte aus alten Programmen, darin können dann
Aufrufe von alten Funktionen enthalten sein, die ich dann auch noch
mitübernehmen muss. Eigentlich sollte mir der Compiler dann anzeigen,
wenn eine Funktion im Projekt noch gar nicht existiert. Unbekannte
Variablen werden hingegen angezeigt.
Hat jemand eine Idee, was da schief làuft?

Gruß,
Thomas
 

Lesen sie die antworten

#1 Rainer Weikusat
05/08/2009 - 16:06 | Warnen spam
Thomas Barth writes:
war es schon immer möglich, Programme zu kompilieren mit
Funktionsaufrufen, die noch gar nicht deklariert sind?



Es war immer moeglich, entspricht aber nicht mehr der C99-Norm.

Der verwendete GCC Compiler zeigt mir die unbekannten Funktionen
nicht an, ignoriert sie scheinbar einfach. Bei der Erstellung des
neuen Programmes kopiere ich u.a. Source-Abschnitte aus alten
Programmen, darin können dann Aufrufe von alten Funktionen enthalten
sein, die ich dann auch noch mitübernehmen muss.



Das funktioniert nicht zuverlaessig, weil es auch eine zufaellig
passende 'neue' Funktion geben sollte. Die 'historischen defaults'
fuer undeklarierte Funktionen waren (AFAIK)

- externe Bindung(*)
- Rueckgabetype int
- abzueglich 'default argument promotions' muessen die
Argument-Typen passend sein

Es sollte allerdings entsprechende Fehlermeldungen des Linkers geben
wenn eine geeignete Funktion wirklich nicht gefunden werden konnte.

Ähnliche fragen