Thomas Holmes schrieb:
> Hat der GCC mittlerweile eigentlich einen Deppenmodus der die
> wilkürliche Verwendung von == und = automatisch korrigiert und aus einem
> Vergleich eine Zweisung und Vice versa macht??
Nein, und wird er auch nicht bekommen.
Das Programm hat immer noch der Programmierer zu schreiben. Davon ab
ist ein = ein = und kein ==, und ein == ist ein == und kein =.
Du würdest ja auch nicht wollen, dass ein Compiler +1 durch -1 ersetzt,
weil er ganz schlau ist und denkt: Das '+' ist überflüssig und daher
hast du doch ganz bestimmt ein '-' gemeint?
Drittens werden die Stellen vom Compiler gewarnt, und wer Warnungen
abschaltet oder ignoriert ist selber Schuld.
Viertens kann die Verwendung gewollt sein wie im Beispiel
1 | (void)
|
2 | (1 == (a = fun ())
|
3 | && (var1 = foo ())
|
4 | && (var2 = bar ())
|
5 | && (var3 = buh ()));
|
das genau so gemeint ist wie es da steht und nicht irgendwie vom
Compiler gepimpt oder hochgeskillt. Dass solche Idiome eher selten
verwendet werden und viele länglichen Code wie den folgenden vorziehen
ist Entscheidung des Anwenders und nicht Belang eines Compilers!
1 | a = fun();
|
2 | if (a == 1)
|
3 | {
|
4 | var1 = foo();
|
5 | if (var1)
|
6 | {
|
7 | var2 = bar();
|
8 | if (var2)
|
9 | var3 = buh();
|
10 | }
|
11 | }
|
Fünftens schließlich: Wenn diese Funktionalität so essenziell wäre und
so oft nachgefragt würde, gäbe es einen Markt dafür und z.B.
Eclipse-Plugins, die den Code entsprechend verschlimmbesserten.