这是我的代码:
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 {
谢谢,斯派德,这很棒。 Necrolis,谢谢你。你们两个都在编译单元的同一轨道上。这是完整的错误报告:
来自location.hh的文件:45, 来自parser.h:64, 来自scanner.h:25, 来自scanner.ll:8: position.hh:46:错误:在'namespace'之前预期的unqualified-id
location.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:
我还要补充一点,这些文件是由野牛生成的。当我尝试编译由flex ++生成的c ++扫描器类时,我就到了这个阶段。我通过发布flex -c ++ -o scanner.c扫描器来获取.cc代码。
答案 0 :(得分:2)
这发生在一个;或者在命名空间之前缺少其他一些结束的东西。你确定34之前的行没有代码吗?如果他们有代码(即使该代码是其他#include),那么错误就在那里。
编辑:或者如果所有34行都没有代码,则错误发生在包含此标题的文件上,很可能是没有结尾的代码;或}或)或其他一些结尾字符,紧接着它(忽略评论,当然)有#include position.hh
或者如果连续有两个包含,一个在position.hh之前,则包含在position.hh之前的标题的最后几行是错误的,通常是没有a的结构;关闭之后}
答案 1 :(得分:2)
错误可能发生在报告的文件以外的文件中(由于编译单元),即在“其他”文件的末尾或附近(例如缺少'}'或';'或'#endif'等)