包含好文件导致的解析错误

时间:2016-12-14 07:42:33

标签: c parsing compiler-errors include

我正在调试一个非常大的项目,我在一个文件中添加了"file_1.c"另一个文件#include "header_2.h"的include语句。我有2个编译错误:

  

错误(dcc:1633):在'100'附近解析错误(从项目'project_3'构建)

     

错误(dcc:1100):成员不完整(从项目'project_3'构建)

但是错误的位置没有意义,因为那里的代码是typedef的一部分:

typedef struct 
{
 unsigned char    A:1,       // <- first error here  (dcc:1633)
                  B:1,        
                  C:6;          
}TYPE_A;

typedef struct
{
 TYPE_A         D;        // <- second error here  (dcc:1100)   
 TYPE_B         E; 
 TYPE_C         F;         
}FOO_T;

现在,此标头header_2.h已包含在其他c文件中,并且没有给我任何问题。

我认为这里的情况可能是循环包括,但我检查了标题,那里有警卫。一旦我删除了include,解析错误就消失了,编译运行正常(因为我已经删除了包含的部分代码)。

我还检查了实际的include行(在file_1.c中),看看是否有解析错误,但是没有。

什么可能导致这个问题,我应该如何处理?

注意:标题本身没有错误。它包含在其他c文件中,并显示没有错误。此外,如果没有这个特定的包含,编译器运行正常。

1 个答案:

答案 0 :(得分:2)

导致问题的标题可能包含类似

的内容
#define A 100

更改了令牌A的含义。

如果标头中定义的宏无意中在另一个文件中使用,那么这只会导致问题;标题和其他文件本身没有问题。