我举了下面的例子来说明我的问题:
1)a.h
其中声明结构
a.h
struct A_Structure;
typedef struct A_Structure *A_Structure_Ptr;
2)
b.c
实现结构定义的位置 #include "a.h"
struct A_Structure
{
int a;
int b;
int c;
};
2)
main.c
调用结构的位置#include <stdlib.h>
#include "a.h"
int main ()
{
struct A_Structure b;
return 0;
}
但是,由于收到以下错误消息,我无法编译这些C代码:
>main.c(6): error C2079: 'b' uses undefined struct 'A_Structure'
有什么想法吗提前谢谢。
编辑:
#include <stdlib.h>
#include "a.h"
int main ()
{
struct A_Structure *b=0;
b=(struct A_Structure*)malloc(12);
b->a=3;
free(b);
return 0;
}
我试着用这种方法创建结构,但还是失败了。
最佳答案
你可能需要这个:
struct A_Structure
{
int a;
int b;
int c;
};
在a.h
这是定义
struct
s时的典型方法如果要实现opaque pointer,则需要一个实例化
A_Structure
并返回指针的函数,以及操作A_Structure
指针的函数:在a.h
A_Structure_Ptr CreateA(int a, int b, int c);
void FreeA(A_Structure_Ptr obj);
void SetA_a( A_Structure_Ptr obj, int a );
int GetA_a( A_Structure_Ptr obj );
// etc.
公元前
A_Structure_Ptr CreateA(int a, int b, int c)
{
A_Structure_Ptr s = malloc( sizeof(A_Structure) );
s->a = a;
s->b = b;
s->c = c;
}
void FreeA(A_Structure_Ptr obj)
{
free( obj );
}
void SetA_a( A_Structure_Ptr obj, int a )
{
obj->a = a;
}
在main.c中
int main ()
{
struct A_Structure *b = CreateA( 1, 2, 3);
SetA_a( b, 3 );
FreeA(b);
return 0;
}
关于c - 为什么实现文件中的C结构定义不可用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31585590/