Wie kann ich eine Funktion erstellen, die einen unbekannten Parameter in C akzeptiert?

8

Sagen Sie, ich habe den folgenden Code:

%Vor%

... wo get_t ist:

%Vor%

Wie kann ich den obigen Code umgestalten und in eine Funktion einfügen? Etwas wie das Folgende:

%Vor%     
rid 17.05.2011, 09:30
quelle

3 Antworten

1

benutze void *param , einen Zeiger auf irgendetwas ..., das normalerweise in glib als gpointer

verwendet wird     
Manuel Salvadores 17.05.2011, 09:33
quelle
3

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 *

%Vor%

So ähnlich.

Sie können die FLOAT und INT und andere als eindeutige Werte hashdefinieren.

Oder einfach

%Vor%     
phoxis 17.05.2011 09:59
quelle
1

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.

Bearbeiten:

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.

    
David X 17.05.2011 10:46
quelle

Tags und Links