【问题标题】:Error: expected '(' to follow a function. expected a ';'错误:预期 '(' 跟随一个函数。预期一个 ';'
【发布时间】:2018-01-04 23:46:01
【问题描述】:

我不明白为什么这个错误继续出现。这是我正在尝试构建的功能: /person 是一个结构。 Person* 是一个指针。

void(*CreateNext)(struct Person *this, int isNextNext, ...)
    {
        Person* person;
        person = (Person*)malloc(sizeof(Person));
        person = CreatePerson(person);
        this->next = person;
    }

The error is on the first line and on the '{'

//This is the struct:
struct Person {
    char* name;
    int id;
    int numOfKids;
    char** kids;
    struct Person* next;
    void (*Print)(struct Person* this);
    void (*KillNext)(struct Person* this);
    struct Person* (*SelfDestruct)(struct Person* this);
    void (*CreateNext)(struct Person* this, int isNextNext, ...);
};

【问题讨论】:

  • 这不是正确的 C;你的意思是像void* CreateNext (struct Person, int, …)这样的东西吗?
  • @CS student This void(*CreateNext)(struct Person *this, int isNextNext, ...) 不是函数定义。这是一个错误的函数指针声明。
  • 它应该是一个指向函数的指针。对不对?
  • 发布 Personstruct Person 的定义可以是两个不同的东西。
  • 请参阅question,了解您显然想问的问题的答案。

标签: c function struct


【解决方案1】:

您在函数范围之外声明了一个变量(指向函数的指针)。

您希望 CreateNext 是函数的名称,而不是变量的名称。声明应该是

void CreateNext(struct Person *this, int isNextNext, ...)
    {
        Person* person;
        person = (Person*)malloc(sizeof(Person));
        person = CreatePerson(person);
        this->next = person;
    }

顺便说一句,您不应该强制返回 malloc()。演员阵容是邪恶的。

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 2016-06-23
    • 1970-01-01
    • 2014-03-16
    • 2021-06-08
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多