您好如何重写可能不好的构造?
我试着询问如何修复它以使其工作there,但也许这是一个糟糕的概念。
还有其他解决办法吗?
它是在Eclipse中使用GCC for linux编译的,编译为C代码。
file 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无法解决” 我使用gcc编辑Eclipse for C和C ++,在Linux Ubuntu 11.10上工作。
答案 0 :(得分:3)
好的,这不是编译器的错误,而是Eclipse的错误。简单地Googl'ing错误“无法解决”指向我谈论Eclipse CDT(用于C / C ++开发的eclipse子系统)的文章。
所以它与Eclipse有关,你的C头看起来语法正确。我相信没有C文件但只有标题,Eclipse不知道如何解析标题只是为了创建自己的索引数据库(必须用于智能感知,符号列表等)。
我建议您插入一个简单的C文件,包括second.h
和main()
函数,以便链接步骤也可以通过,例如:
#include "second.h"
int main() {
wtf_struct my_variable;
return 0;
}
答案 1 :(得分:1)
我遇到了相同的错误: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;
答案 2 :(得分:0)
我怀疑你已创建(并包含)两个标题,这两个标题都具有相同的标题保护
#ifndef FIRST_H_
#define FIRST_H_
答案 3 :(得分:0)
创建一组包装其他类型的typedef后,我遇到了同样的问题。 解决方案是重建Eclipse Index - 右键单击项目 - >指数 - >重建