0undNichtig wrote:
> Ich habe mal ne Frage und zwar kann man durch irgendein Schlüsselwort
> unter C99 bereits implementierte Funktionen mit derselben Parameterliste
> überschreiben z.B. weil die neue Funtion effizienter arbeitet?
Auf Sprachebene geht das prinzipiell nicht, da Compiler, die sowas
ermöglichen, aus dem Namensraum - z.B. der Klasse, in der eine Funktion
definiert ist -, dem Funktionsnamen und der Parameterliste eine sog.
Signatur bildet.
Signaturen müssen eindeutig auf eine Definition weisen, sonst
funktioniert das nicht.
> Oder müsste man da die alte Funktion per Präprozessor ausblenden?
Ich kann dir leider nur einen bösen Hack bieten, mit dem man sowas
hintrixen kann, muß aber gleichzeitg dringend davor warnen, ihn zu
benutzen, weil man sich (und anderen) damit ganz böse ein Bein stellen
kann und zudem die Benutzung von IDE-Funktionen zur Lokalisierung von
Funktionen nicht mehr gehen und das Debuggen ist auch kein Vergnügen:
Angenommen, du willst puts irgendwoanders hin umbiegen. Dann includest
du zuerst den Header, in dem puts deklariert ist. Dahinter schreibst du
dann sowas wie
#define puts(s) my_puts(s)
Dann ersetzt der Preprozessor ab dieser Stelle alle Aufrufe von puts
durch my_puts.
Dieser Trick funktioniert allerdings nur für Funktionen mit fester
Parameter-Anzahl.
Eine noch fiesere Variante:
#define puts my_puts
Dann gehts auch mit Funktionen wie printf - aber wie gesagt: es ist ein
tückischer Hack.
Visual C macht sowas, um den Debug-Heap zu aktivieren - ein ziemliches
Ärgernis...