Estate atento ya que en esta reseña vas a encontrar la solución que buscas.
Solución:
Una forma de rastrear tales errores es comenzar desde cero:
#include "filepath/ui.h"
int main () return 0;
¿Esto compila? (Esto funciona bien con el pequeño fragmento de ui.h que proporcionó).
Errores como estos a menudo son causados por la falta de un punto y coma en alguna declaración de clase anterior. Así que intentemos forzar el problema:
struct Foo int foo; // Note the missing semicolon after the close brace.
#include "filepath/ui.h"
int main () return 0;
Esto, por supuesto, no compila limpio. Obtengo un complicado seguimiento de ruta de inclusión desde mi testmain.cpp a su ruta de archivo/ui.h a string … y eventualmente obtener
/usr/include/i386/_types.h:37: error: two or more data types in declaration of '__int8_t'
Así que ese no es el error, pero el punto y coma faltante seguro está creando un lío. Tu error no está surgiendo en lo profundo de las entrañas de
así que hagamos nuestro programa de prueba #include
antes de intentar recrear el error:
#include
struct Foo int foo; // Note the missing semicolon after the close brace.
#include "filepath/ui.h"
int main () return 0;
Y el mensaje de error es
In file included from testmain.cpp:5:
filepath/ui.h:6: error: expected unqualified-id before 'namespace'
Y ahí está. Entonces, algún otro encabezado que #incluyes antes de filepath/ui.h tiene una declaración de clase mal formada.
Apéndice
A veces ayuda usar un compilador diferente. g ++ es conocido por su mal tratamiento de este error de programación común. Compilando lo anterior con rendimientos clang
testmain.cpp:4:2: error: expected ';' after struct
Entonces, tada, clang se ha concentrado en el problema.
Lo que sucede es que cuando un compilador tiene problemas, aplica alguna corrección a su código para que sea gramaticalmente correcto. El mensaje de error del compilador se basa en esta corrección automática. Tenga en cuenta que esta autocorrección es, en general, algo muy bueno. Sin él, el compilador necesariamente tendría que cerrarse al primer error. Dado que los programadores inevitablemente cometen más de un error, cazarlos uno a la vez sería un dolor de cabeza.
No tengo la menor idea de qué corrección tonta aplica g ++ para solucionar el problema del punto y coma faltante, aparte de no agregar el punto y coma faltante obvio. clang agrega el punto y coma faltante, y eso es de lo que se queja.