benutze void *param
, einen Zeiger auf irgendetwas ..., das normalerweise in glib als gpointer
Ich habe zwei Ideen:
[1] Übergeben Sie den Zeiger void
an die Variable / das Objekt und geben Sie sie in die Funktion ein.
[2] Erstellen Sie eine Union aller Datentypen zusammen mit einem Ganzzahl-Datentyp, der angibt, welche Datentypvariable in der Union die tatsächlichen Daten enthält. Übergeben Sie diese Union als Wert oder als void *
So ähnlich.
Sie können die FLOAT
und INT
und andere als eindeutige Werte hashdefinieren.
Oder einfach
%Vor%Wenn Sie gcc haben, können Sie diese typsichere Version verwenden:
%Vor%Rufen Sie an als:
%Vor% (Sie müssen &
nicht für Funktionen verwenden, sie werden automatisch zu Zeigern, wie Arrays). Dies überprüft, dass t
ein Zeiger ist und dass get_t
eine Funktion ist, die diesen Typ von Zeiger zurückgibt. _varp_
ist technisch nicht erforderlich, hält aber die Argumentauswertung in der richtigen Reihenfolge.
Wenn Sie gcc nicht haben, können Sie das trotzdem tun, aber Sie müssen den Typ explizit angeben:
%Vor%Rufen Sie an als:
%Vor%nicht ganz so sicher und redundanter, aber immer noch ziemlich gut.