2016-10-27 3 views
0

Hier ein Beispiel:Kann ich wirklich eine Funktion wie Makro

#define get_i() i 
int i; 
int i2; 

i2 = get_i();

Im Fall oben ^^^ get_i() wirkt wie eine Funktion, die etwas (den Wert von i in diese zurückkehrt Fall).

Dieser ^^^ oben fungiert wie eine Funktion, die NICHT zurückkehrt.

Meine Frage ist, kann ich Makros verwenden, um ein funktionsähnliches Makro zu erstellen, das sowohl etwas tun als auch ein Objekt zurückgeben kann? Hier ist ein Pseudocode:

#define increse_i2_and_return_i() i2++; return i; 

Ist das möglich?

+2

Verwenden Sie den Komma-Operator. aber besser, sagen Sie uns * was * Sie versuchen zu erreichen (und nicht wie) –

Antwort

2

Sie können den Komma-Operator dafür verwenden. Der Wert des letzten Operanden ist der Wert eines ganzen Ausdrucks.

#define increse_i2_and_return_i() (i2++, i) 

Der Nachteil dieses Tricks ist, dass Sie temporäre Variablen in einem solchen Makro nicht erstellen können.

+0

Ich werde die Variablen übergeben, als Argumente. Genau dafür habe ich gesucht;) – Hairi

Verwandte Themen