5

我想为一个函数编写一个函数原型,它的参数是一个指向结构的指针。

int mult(struct Numbers *n)

但是,结构 Numbers 定义为

struct Numbers {
    int a;
    int b;
    int c;
};

尚未定义。我应该如何为 mult 编写合适的原型?

4

2 回答 2

5

只需struct Numbers在函数声明之前声明为不完整类型:

struct Numbers;

int mult(struct Numbers *n);
于 2013-08-04T23:09:48.247 回答
4

您必须转发结构的声明以告诉编译器将定义具有该名称的结构:

struct Numbers;

int mult(struct Numbers *n) {

}

struct Numbers {
    int a;
    int b;
    int c;
};

请注意,编译器无法确定结构在内存中的大小,因此您无法按值传递它。

于 2013-08-04T23:11:34.827 回答