alias
-
Guten Tag zusammen,
ich habe folgende Frage: Ich habe eine Funktion namens PF_Init_Rbe3 geschrieben Nun moechte ich auch noch eine Funktion haben, die genau das gleiche macht, die aber PF_Init_Single_Rbe3 heisst. Ich koennte natuerlich die Funktion einfach kopieren und umbenennen, aber da es bei vielen Funktionen benoetigt wird, wird der Quellcode nur unnoetig gross. Gibt es eine elegantere Art in C, sowas zu erledigen?
-
Die beste Variante ist es, von deiner Funktion aus die Alias-Funktion aufzurufen:
typ PF_Init_Single_Rbe3(...) { return PF_Init_Rbe3(...); }
(die Paramter und den Rückgabetyp mußt du natürlich noch anpassen - dabei kannst du sogar die Parameter umordnen oder ergänzen (z.B. eine Anzahl-Angabe für die PF_Init_Rbe3() mnit 1 vorbelegen))
PS: Was hat es eigentlich für einen Sinn, zwei absolut identische Funktionen zu haben?
-
Besten Dank.
Warum zwei Namen fuer eine Funktion? Die Funktionen bilden zusammen eine Library. Ich moechte eigentlich der Uebersicht halber auf PF_Init_Single_Rbe3 wechseln. Wenn ich aber jetzt einfach den Namen aendere, wuerden viele Programme, die diese Library verwenden beim neukompilieren diese Funktion nicht mehr finden.
Die Loesung mit der alten Funktion in der Neuen gefaellt mir gut. Gibt es noch andere Moeglichkeiten?
-
Ja, verschiebe den gesamten Funktionsrumpf in die neue Funktion und reduziere die alte auf so einen indirekten Aufruf (dabei kannst du eventuell gleich eine Warnung mitgeben, daß diese Funktion nicht mehr genutzt werden sollte).
Die primitivste Lösung wäre es noch, den Präprozessor zu bemühen - mit einem
#define PF_Init_Single_Rbe3 PF_Init_Rbe3
werden alle Vorkommen des neuen Funktionsnamens schon durch den alten ersetzt, bevor der Compiler den Quelltext sieht.
(das hat allerdings u.a. den Nachteil, daß bei einer späteren Änderung jedes Programm neucompiliert werden muß, daß mit der Library arbeitet - und daß du intern weiterhin nur die "alte" Funktion hast)