Minimal-Code des größeren Problems:Zugriff Zeiger auf Datenelement „Fehler: erwartet unqualifizierte-ID vor‚*‘Token“
struct S { int i; };
typedef int (S::*Type);
Type foo (int) { return &S::i; }
#define FOO(X) *foo(X)
int main()
{
S s;
s.*foo(0) = 0; // ok
s.FOO(0) = 0; // error <--- ??
}
Wenn foo()
Methode mit FOO()
Makro zu vermeiden "ersetzt * ', dann wird der Fehler im Titel angezeigt. Wenn ich die Vorverarbeitung mit der Option g++ -E
überprüfte, dann sehen beide "ok" & "Fehler" -Leitungen gleich aus.
Warum ist dieser Fehler mit Makro?
Ihre Analyse scheint mir richtig. Es ist mehr von gcc bug. – iammilind