【发布时间】:2015-02-16 16:02:49
【问题描述】:
显然在 C99 中,您可以通过这种方式简单地初始化静态分配的结构
struct sometype {
int a;
double b;
};
sometype a = {
.a = 0;
};
嗯,这不适用于像这样的堆上的结构。
struct sometype *a = malloc(sizeof(struct sometype));
*a = {
.a = 0;
};
使用 GCC 4.9.2,编译器抱怨
error: expected expression before '{' token
我知道这很愚蠢,但是有什么语法或技术原因我不能这样做吗?
【问题讨论】:
-
你承诺的malloc在哪里?你意识到没有名为 sometype 的类型吗?只有 struct sometype,没有 sometype。
-
@gnasher729 嗯,这只是一个说明,我没有那么仔细,因为第二段代码很重要。