2010-02-10 3 views
3

Voici mon code:position.hh: 46: erreur: attendu-id non qualifié avant 'espace de nommage

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  {  

Merci, speeder, c'est super. Necrolis, merci aussi. Vous deux êtes sur la même piste dans les unités de compilation. Voici le rapport d'erreur complète:

Dans le fichier inclus de location.hh: 45, de parser.h: 64, de scanner.h: 25, de scanner.ll: 8: position.hh: 46 : erreur: attendu-id non qualifié avant « espace de noms »

location.hh ressemble à ceci:

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: 

Je dois aussi ajouter que ces fichiers sont générés par le bison. C'est quand j'essaie de compiler la classe scanner C++ générée par flex ++ que j'en arrive à ce stade. J'obtiens le code .cc en émettant flex --C++ -o scanner.cc scanner.ll.

+1

Qu'y a-t-il sur les lignes 1-33? – fbrereto

Répondre

2

cela se produit quand a; ou quelque chose de fermeture manque avant l'espace de noms. Etes-vous sûr que les lignes avant 34 n'ont pas de code? S'ils ont du code (même si ce code est #include) l'erreur est là.

EDIT: Ou dans le cas où toutes les 34 lignes n'ont pas de code, l'erreur est sur le fichier qui comprend cet en-tête, très probablement il y a un code sans une fin; ou} ou) ou un autre caractère de fin, et juste après (en ignorant les commentaires, bien sûr) il y a la position #include.hh

Ou s'il y a deux inclus dans une rangée, un avant position.hh, le les dernières lignes de l'en-tête incluses avant position.hh sont avec l'erreur, généralement une structure sans a; après la fermeture}

+0

Speeder: toutes les lignes avant ce que j'ai posté sont des commentaires. Merci! – vergueishon

+0

@jedibrand: il y a plusieurs façons d'écrire un commentaire, y compris les incorrectes ... –

+0

J'ai supprimé tout ce qui précède la ligne 40 et j'ai essayé de compiler à nouveau, la même erreur ... – vergueishon

2

L'erreur peut se produire dans un fichier autre que le fichier dans lequel il a été signalé (en raison des unités de compilation), à la fin ou près de la fin de ce 'autre' fichier (par exemple '} 'ou'; 'ou' #endif 'etc.)

Questions connexes