在foo.h中,我有:
struct Foo_st {
int a;
MyObj obj1, obj2;
};
typedef struct Foo_st* Foo;
在内部,foo.c
我想为我分配空间struct
,所以我尝试:
Foo foo1 = (Foo) malloc(sizeof(Foo_st));
但我得到一个错误-
未声明“ Foo_st”(此函数中的首次使用)
我究竟做错了什么?
在C中,结构名称必须以开头struct
。你要:
Foo foo1 = malloc(sizeof(struct Foo_st));
或者,将struct Foo_st
声明替换为typedef:
typedef struct {
int a;
MyObj obj1, obj2;
} Foo_st;
这定义Foo_st
为匿名struct
类型的别名。您的原始分配对帐单将生效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句