позиция.чч:46:ошибка:ожидаемый неквалифицированный идентификатор перед ‘namespace’
-
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' и т.д.)