позиция.чч:46:ошибка:ожидаемый неквалифицированный идентификатор перед ‘namespace’

StackOverflow https://stackoverflow.com/questions/2234294

  •  19-09-2019
  •  | 
  •  

Вопрос

Вот мой код:

 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     {    

Спасибо, спидер, это здорово.Некролис, тебе тоже спасибо.Вы оба, ребята, записываете один и тот же трек на сборниках.Вот полный отчет об ошибке:

В файл, включенный из location.hh:45, из parser.h:64, из scanner.h:25, из scanner.ll:8:позиция.чч:46:ошибка:ожидаемый неквалифицированный идентификатор перед ‘namespace’

Расположение.hh выглядит примерно так:

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:

Я должен также добавить, что эти файлы генерируются bison.именно тогда, когда я пытаюсь скомпилировать класс c ++ scanner, сгенерированный flex ++, я добираюсь до этого этапа.Я получаю код .cc, выдавая flex --c ++ -o scanner.cc scanner.ll.

Это было полезно?

Решение

это происходит, когда ;или перед пространством имен отсутствует какая-то другая закрывающая вещь.Вы уверены, что строки перед 34 не содержат кода?Если у них есть код (даже если этот код является другим #include), то возникает ошибка.

Редактировать:Или, если во всех 34 строках нет кода, ошибка в файле, который содержит этот заголовок, скорее всего, там код без окончания ;or } или ) или какой-либо другой символ окончания, и сразу после него (игнорируя комментарии, конечно) есть позиция #include.hh

Или, если есть два включения в строке, одно перед position.hh, последние строки заголовка включены перед position.hh с ошибкой, обычно структура без ;после закрытия }

Другие советы

Ошибка может возникать в файле, отличном от файла, в котором она указана (из-за блоков компиляции), а именно в конце этого "другого" файла или вблизи него (например, отсутствует '}' или ';' или '#endif' и т.д.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top