Próbuję zbudować Amayę. Kiedy budowa nie powiodło się zDebugowanie preprocesora C++
error: expected unqualified-id before ‘(’ token
Pobiegłem g ++ tylko preprocesora (zastąpienia opcji -c z -E) na pliku, który udało się skompilować, aby zobaczyć co się dzieje. Spowodowało to powstanie pliku o wartości 80 000 linii, pokazując, że "niebieski" został zastąpiony przez (2 < < 8), co jasno wyjaśniło błąd. Jeśli to poprawię, plik będzie kompilowany poprawnie. Sądzę, że mógłbym z tym żyć, ale chciałbym się dowiedzieć, dlaczego tak się dzieje.
Czy jest jakiś sposób mogę śledzić, jak preprocesor zastępuje określony ciąg, w tym przypadku "niebieski"?
================= Aktualizacja ===================
Cóż, znalazłem winowajca:
> 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)
Dodanie #undef Blue rozwiązało problem. Zatem używanie kombinacji -M i grep wydaje się być w porządku, ale czasami definicje preprocesora C++ mogą być prawdziwym lasem; Byłem ciekawy, czy jest jakiś lepszy sposób, może jakieś sprytne narzędzie GNU.
Która platforma? – laalto
i686 GNU/Linux. – Alex