由于老师的要求,基本上我正在此CLion应用程序上运行此代码。
我在.c文件中定义了这样的'Estado'结构:
struct estado{
char modo;
char jogador;
char matriz[8][8];
int pretas;
int brancas;
};
并将其保存在我的.h文件中:
typedef struct estado* Estado;
在我尝试访问的main.c文件中:
printf("%s",novo -> matriz[1]);
它说:“错误:将指向不完整类型'struct estado'的指针取消引用”
你能帮我吗?
答案 0 :(得分:1)
您应该将struct
声明放在.h
文件中,而不是.c
文件中。
答案 1 :(得分:1)
如果您未在标头中定义结构,则最终将得到一个 opaque 指针,这样该结构内部的内容对于其他翻译单元都是隐藏的。
您总是可以在标头中声明一些访问器函数
typedef struct estado Estado; // <- Not a pointer
Estado *alloc_estado(void);
void print_row(Estado *e, int i);
// ...
在.c
文件中定义那些
#include "estado.h"
struct estado
{
char modo;
char jogador;
char matriz[8][8];
int pretas;
int brancas;
};
void print_row(Estado *e, int i)
{
printf("%s\n", e->matriz[i]);
}
// ...
并在main
#include "estado.h"
int main(void)
{
Estado *pes = alloc_estado();
// ...
print_row(pes, 1);
// ...
free(pes);
}