Bleibt die Frage, was falsch umgesetzt ist. Der
Adress-Operator oder der pre-increment Operator … könnte das
auch an andere Stelle Konsequenzen haben? Sprich: Braucht
entweder der Adress-Operator keinen l-value (wobei die Frage
wäre, wovon er dann die Adresse angäbe) oder gibt der
per-de/increment Operator doch einen l-value zurück?
Offenbar geben die pre-de/increment Operatoren doch einen l-value zurück.
char \*ptext = "haha";
char \*\*pptext;
pptext = &(++ptext);
AfxMessageBox(\*pptext);
++ptext = "huhu";
AfxMessageBox(\*pptext);
--ptext = "hoho";
AfxMessageBox(\*pptext);
Nacheinander kommen die Ausgaben
aha
huhu
hoho
Bei post-de/increment beschwert sich der Compiler übrigens. So richtig schlimme Konsequenzen fallen mir gerade nicht ein. Bei „pptext = &(–ptext)“ zeigt *pptext zwar in den Wald, aber das läßt sich ANSI-konform genauso erreichen.
Micro$ofts Compiler hat einige Dutzend Optionen, mit denen sich auch diverse nicht-ANSI-Features an- und abschalten lassen. Ich bin jetzt allerdings zu faul, die alle durchzusehen. Insofern weiß ich nicht, ob hier nicht die alte Programmiererweisheit „it’s not a bug, it’s a feature“ zutrifft.
Gruß, Ralf