【发布时间】:2025-12-21 05:05:06
【问题描述】:
给定以下结构
struct foo
{
int b;
int a;
int r;
};
我想从这个结构中创建一个新类型,如下所示
typedef struct foo * foo_t;
也就是说foo_t应该等于struct foo的指针。
所以struct foo *var; foo_t var;
为什么我不能从它的类型中分配这个结构?
foo_t var = malloc(sizeof(*foo_t));在编译时抛出错误
错误:
foo_t之前的预期表达式
foo_t var = malloc(sizeof((*_foo_t)));
【问题讨论】:
-
foo_t 等于一个指针。我们需要 malloc 结构的大小,而不是指针
-
谢谢大家
-
... 这正是我不喜欢将指针隐藏在 typedef 后面的原因。 :-)
-
我正在制作面向对象 C,我更喜欢强制使用指针 ;)