3

这是我的代码:

 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:错误:“命名空间”之前的预期 unqualified-id</p >

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++ -oscanner.ccscanner.ll 来获得 .cc 代码。

4

2 回答 2

2

这发生在一个; 或命名空间之前缺少其他一些关闭的东西。您确定 34 之前的行没有代码吗?如果他们有代码(即使该代码是其他#include),则错误就在那里。

编辑:或者如果所有 34 行都没有代码,则错误出现在包含此标头的文件上,很可能有一个没有结尾的代码;或 } 或 ) 或其他一些结尾字符,紧随其后(当然忽略注释)有 #include position.hh

或者如果一行中有两个包含,一个在 position.hh 之前,则在 position.hh 之前包含的标题的最后几行有错误,通常是没有 ; 的结构 结束后}

于 2010-02-10T03:58:20.377 回答
2

错误可能发生在报告的文件以外的文件中(由于编译单元),即在“其他”文件的末尾或附近(例如缺少“}”或“;”或“# endif'等)

于 2010-02-10T04:59:30.253 回答