Saltar al contenido

Error “Se esperaba una identificación no calificada antes del ‘espacio de nombres'”

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *