Pregunta

Aquí está mi código:

 34  
 35 /**  
 36  ** \file position.hh  
 37  ** Define the example::position class.  
 38  */  
 39   
 40 #ifndef BISON_POSITION_HH   
 41 #define BISON_POSITION_HH   
 42    
 43 #include <iostream>   
 44 #include <string>   
 45    
 46 namespace example   
 47 {   
 48   /// Abstract a position.   
 49   class position   
 50   {   
 51   public:   
 52    
 53     /// Construct a position.   
 54     position ()    
 55       : filename (0), line (1), column (0)   
 56     {    

Gracias, reductor de velocidad, que es grande. Necrolis, gracias también. Ambos chicos están en la misma pista en las unidades de compilación. Aquí está el informe de error completo:

En el archivo incluído en location.hh: 45,                  de parser.h: 64,                  de scanner.h: 25,                  de scanner.ll: 8: position.hh: 46: error: se esperaba sin reservas-id antes ‘espacio de nombres’

location.hh se ve así:

35 /**
36  ** \file location.hh
37  ** Define the example::location class.
38  */
39 
40 #ifndef BISON_LOCATION_HH
41 # define BISON_LOCATION_HH
42 
43 # include <iostream>
44 # include <string>
45 # include "position.hh"
46 
47 namespace example
48 {
49 
50   /// Abstract a location.
51   class location
52   {
53   public:

También debo añadir que estos archivos están siendo generados por los bisontes. que es cuando intento compilar la clase analizador en C ++ ++ generada por flexión que llego a esta etapa. Consigo el código .cc mediante la emisión de flexión -C ++ -o scanner.cc scanner.ll.

¿Fue útil?

Solución

Esto sucederá cuando una; o alguna otra cosa que falta cerrar antes de que el espacio de nombres. ¿Estas seguro que las líneas antes de las 34 no tienen código? Si tienen código (incluso si ese código es distinto #include) el error está ahí.

Edit: O en caso de que todas las 34 líneas tienen ningún código, el error está en el archivo que incluye esta cabecera, más probable es que hay un código sin fin; o} o) o algún otro carácter final, y justo después de que (ignorando los comentarios, por supuesto) no son los position.hh # include

O si hay dos incluye en una fila, uno antes position.hh, las últimas líneas de la cabecera incluidos antes position.hh son con el error, por lo general una estructura sin una; después del cierre}

Otros consejos

El error podría estar ocurriendo en un archivo distinto del archivo de su reportado en (debido a las unidades de compilación), es decir, en o cerca del final de ese archivo 'otro' (como una falta '}' o ';' o '#endif', etc)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top