2016-05-22 30 views
3
int main() { 
    int x = 1, y = 2, z = 3, w = 4; 
#define formula x + y * z % w 
    x++; 
    do_something1(formula); 
    y++; 
    do_something2(formula); 
    z++; 
    do_something3(formula); 
    w++; 
    do_something4(formula); 
#undef formula 
    return 0; 
} 

ich derzeit #define lange rvalue Wiederholung zu verhindern, indem bin. Gibt es einen besseren alternativen Weg, dies zu tun?Wie um zu verhindern lange rvalue Wiederholung

+2

Wissen Sie, was eine Funktion ist? Wenn ja, warum nicht eine Funktion schreiben, die die von der Formel geforderte Berechnung durchführt? – Peter

+0

'int formel (int x, int y, int z, int w) {return x + y * z% w; } ' –

Antwort

6

Verwendung lambda Ausdruck:

int main() { 
    int x = 1, y = 2, z = 3, w = 4; 
    auto formula = [&] { return x + y * z % w; }; 
    x++; 
    do_something1(formula()); 
    y++; 
    do_something2(formula()); 
    z++; 
    do_something3(formula()); 
    w++; 
    do_something4(formula()); 
    return 0; 
}