麻烦的是你告诉编译器你返回的是一个int,你想要说struct point convertToPoint(...) 您看到的错误消息告诉您这一点,如果您知道如何解析它的话 error: incompatible types when returning type ‘struct point’ but ‘int’ was expected return p;
return p;-〉这是编译器可以分辨的麻烦语句。
incompatible types when returning-〉您返回了错误的内容,请检查您返回的内容以及签名是什么
type ‘struct point’-〉这是您在body中返回的内容
but ‘int’ was expected-〉这是来自函数签名的值。 下面是一个完整的例子
// convert.c
#include <stdio.h>
#include <stdlib.h>
struct point {
int x;
int y;
};
struct point convertToPoint(int argc, char *argv[]) {
struct point p;
int x, y;
p.x = atoi(argv[1]);
p.y = atoi(argv[2]);
return p;
}
int main(int argc, char** argv) {
struct point p = convertToPoint(argc, argv);
printf("%d, %d", p.x, p.y);
}
2条答案
按热度按时间kgsdhlau1#
这是一个非常简单的问题,你说你想返回一个
struct point
,但是你的代码说这个函数应该返回int
。因此,只需将其更改为
struct point
- like:也就是说-在不使用
argc
的情况下传递它有点奇怪。要么删除该函数参数,要么使用它来检查是否提供了足够的参数。例如:还请注意,我删除了
int x, y;
,因为这些变量没有使用。0md85ypi2#
麻烦的是你告诉编译器你返回的是一个
int
,你想要说struct point convertToPoint(...)
您看到的错误消息告诉您这一点,如果您知道如何解析它的话
error: incompatible types when returning type ‘struct point’ but ‘int’ was expected return p;
return p;
-〉这是编译器可以分辨的麻烦语句。incompatible types when returning
-〉您返回了错误的内容,请检查您返回的内容以及签名是什么type ‘struct point’
-〉这是您在body中返回的内容but ‘int’ was expected
-〉这是来自函数签名的值。下面是一个完整的例子
证明它有效
最后,您可以做一点重构来清理这一点