您好如何重写可能不好的构造? 我试着问如何解决它使它工作there,但也许这是所有糟糕的概念。还有其他解决办法吗?它是在Eclipse中使用GCC for linux编译的,编译为C代码。
文件first.h
#ifndef FIRST_H_
#define FIRST_H_
typedef struct foo
{
int a;
char *c;
} foo_struct;
#endif /* FIRST_H_ */
file second.h:
#ifndef SECOND_H_
#define SECOND_H_
#include "first.h"
typedef struct wtf
{
foo_struct *poleFOO[5];
}wtf_struct;
#endif /* SECOND_H_ */
具体在文件second.h中行foo_struct * poleFOO [5];抛出:“foo_struct无法解决”我在Linux Ubuntu 11.10上使用gcc编辑Eclipse for C和C ++。
好的,这不是编译器的错误,而是来自Eclipse。简单地Googl'ing错误“无法解决”指向我谈论Eclipse CDT(用于C / C ++开发的eclipse子系统)的文章。
所以它与Eclipse有关,你的C头在语法上是正确的。我相信没有C文件但只有标题,Eclipse不知道如何解析标题只是为了创建自己的索引数据库(必须用于intellisense,符号列表等)
我建议你插入一个简单的C文件,包括second.h
,并使用main()
函数,以便链接步骤也通过,例如:
#include "second.h"
int main() {
wtf_struct my_variable;
return 0;
}
我有同样的错误:对于typedef中的包装类型(下面提到),“vuint16 - 无法解析”,并且通过在Eclipse环境中重建索引(右键单击项目 - >索引 - >重建)成功解决了它。这不是编译器错误!
[headerfile1: can.h]
#define vuint8 uint8
[headerfile2: can_local.h]
#include "Can.h" /* include all needed types */
typedef struct sCanRxFullInfoStruct
{
vuint16 objectNumber; //error line
} tCanRxFullInfoStruct;
我怀疑你已创建(并包含)两个标题,它们都具有相同的标题保护
#ifndef FIRST_H_
#define FIRST_H_
创建一组包装其他类型的typedef后,我遇到了同样的问题。解决方案是重建Eclipse索引 - 右键单击项目 - >索引 - >重建