Ich versuche Amaya zu bauen. Wenn der Build mitDebugging des C++ Präprozessors
fehlgeschlagenerror: expected unqualified-id before ‘(’ token
lief ich g ++ nur mit dem Prä-Prozessor auf die Datei (die Option -c mit -E ersetzen), die zu kompilieren versäumt zu sehen, was los war. Dies ergab eine 80.000-Zeilen-Datei, die mir zeigte, dass "Blau" durch (2 8) ersetzt wurde, was den Fehler klar erklärte. Wenn ich das korrigiere, kompiliert die Datei gut. Ich könnte damit leben, aber ich würde gerne herausfinden, warum das passiert.
Kann ich irgendwie verfolgen, wie der Präprozessor eine bestimmte Zeichenfolge ersetzt, in diesem Fall 'Blau'?
================= aktualisieren ===================
Nun, ich fand die Täter:
> headers=`g++ [omited for brevity] -M \
../../thotlib/dialogue/AmayaClassicNotebook.cpp`
> for file in $headers ; do grep -s -H Blue $file | grep "(2 << 8)";done
/usr/local/include/gc.h:#define Blue (2 << 8)
So fügte #undef Blue das Problem behoben. Die Verwendung dieser Kombination aus -M und grep scheint also OK zu sein, aber manchmal können C++ - Präprozessordefinitionen eine echte Gesamtstruktur sein. Ich war neugierig, ob es vielleicht einen besseren Weg gäbe, ein cleveres GNU-Tool.
Welche Plattform? – laalto
i686 GNU/Linux. – Alex