0

我在编写一个创建结构并使用作为参数传入的数据填充字段的函数时遇到问题。我对 C 很陌生,所以这对我来说非常具有挑战性。

我创建了一个名为“Employee”的结构,其中包含姓名、出生年份和开始年份。

typedef struct {
    char* name;
    int birthyear;
    int startyear;
}   Employee;

对于我创建的函数,我不断收到关于取消引用指向不完整类型的指针的错误。此外,我收到一个错误,因为 sizeof 对不完整类型的 struct Employee 应用无效。

Employee* make_employee(char *name, int birthyear, int startyear) {
    struct Employee* newemployee = (struct Employee*)malloc(sizeof(struct Employee));
    newemployee->name = name;
    newemployee->birthyear = birthyear;
    newemployee->startyear = startyear;
    return newemployee;
}

我确定我只是犯了非常简单的错误,但非常感谢您的帮助和解释!

4

1 回答 1

2

你唯一的问题是这一行:

struct Employee* newemployee = (struct Employee*)malloc(sizeof(struct Employee));

在您的情况下,struct关键字是错误的。由于您定义和typedef编辑结构的方式,没有这样的类型struct Employee- 只有简单的 typedefEmployee是有效的。只需删除所有三个struct,你应该没问题:

Employee *newemployee = malloc(sizeof(Employee));

为了清楚起见,我删除了不必要的演员表。

或者,您可以更改结构定义以包含结构名称,而不仅仅是创建一个匿名结构并typdef对其进行 ing:

typedef struct Employee {
    char *name;
    int birthyear;
    int startyearl
} Employee;
于 2013-02-03T17:54:26.013 回答