Estoy intentando construir Amaya. Cuando la compilación falló conDepuración del preprocesador C++
error: expected unqualified-id before ‘(’ token
me encontré con g ++ con sólo el preprocesador (en sustitución de la opción -c con -E) en el archivo que no pudo compilar para ver lo que estaba pasando. Esto produjo un archivo de 80,000 líneas, mostrándome que 'Azul' había sido reemplazado por (2 < < 8), lo que explicaba claramente el error. Si corrijo esto, el archivo compila bien. Creo que podría vivir con eso, pero me gustaría descubrir por qué sucede esto.
¿Hay alguna manera de que pueda rastrear cómo el preprocesador está reemplazando una cadena específica, en este caso 'Azul'?
actualización ================= ===================
Bueno, he encontrado el culpable:
> 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)
Entonces, agregar #undef Blue solucionó el problema. Entonces, usar esta combinación de -M y grep parece correcto, pero a veces las definiciones del preprocesador de C++ pueden ser un bosque real; Tenía curiosidad de saber si había alguna forma mejor, alguna herramienta ingeniosa de GNU tal vez.
¿Qué plataforma? – laalto
i686 GNU/Linux. – Alex