C语言 定义结构体 作为函数参数 总是报错显示 unknown typename 编译器是Codeblocks
鄙人刚刚开始学C语言,按照课件照葫芦画瓢用typdef搞出了两个结构体,然后跑的时候总是显示error:unknowntypename'carte_t',不是前面typd...
鄙人刚刚开始学C语言,按照课件照葫芦画瓢用typdef搞出了两个结构体,然后跑的时候总是显示error: unknown typename 'carte_t',不是前面typdef已经声明过carte_t 了吗,(因为老师说一定要用指针,所以我底下又搞了个 *list)现在已经搞了很久了,就是报错。
题目大意平面内一点的表示方法,然后就是定义两个结构体,然后数据转换,总之是很简单的坐标转换。‘
本人刚入门,水平有限。
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
void convert(carte_t *list);
typedef struct carte
{
double x;
double y;
}carte_t;
typedef struct polar
{
double l;
double i;
}polar_t;
int main()
{
carte_t* list = malloc(sizeof(carte_t));
*list =(carte_t){3,0.8};
convert(*list);
printf("%g %g\n",list->x,list->y);
return 0;
}
void convert(carte_t *list)
{
polar_t* newlist = malloc(sizeof(polar_t));
newlist->l=pow((pow(list->x,2)+pow(list->y,2)),0.5);
newlist->i = atan2(list->y,list->x);
printf("%g %g",newlist->l,newlist->i);
} 展开
题目大意平面内一点的表示方法,然后就是定义两个结构体,然后数据转换,总之是很简单的坐标转换。‘
本人刚入门,水平有限。
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
void convert(carte_t *list);
typedef struct carte
{
double x;
double y;
}carte_t;
typedef struct polar
{
double l;
double i;
}polar_t;
int main()
{
carte_t* list = malloc(sizeof(carte_t));
*list =(carte_t){3,0.8};
convert(*list);
printf("%g %g\n",list->x,list->y);
return 0;
}
void convert(carte_t *list)
{
polar_t* newlist = malloc(sizeof(polar_t));
newlist->l=pow((pow(list->x,2)+pow(list->y,2)),0.5);
newlist->i = atan2(list->y,list->x);
printf("%g %g",newlist->l,newlist->i);
} 展开
展开全部
你定义的void convert(carte_t *list);实在结构体定义之前,导致error: unknown typename 'carte_t';
需要将函数定义在结构体之后!
以下修改
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
typedef struct carte
{
double x;
double y;
}carte_t;
typedef struct polar
{
double l;
double i;
}polar_t;
void convert(carte_t *list);//定义在这
int main()
{
carte_t* list = malloc(sizeof(carte_t));
*list =(carte_t){3,0.8};
convert(*list);
printf("%g %g\n",list->x,list->y);
return 0;
}
void convert(carte_t *list)
{
polar_t* newlist = malloc(sizeof(polar_t));
newlist->l=pow((pow(list->x,2)+pow(list->y,2)),0.5);
newlist->i = atan2(list->y,list->x);
printf("%g %g",newlist->l,newlist->i);
}
还有一些其他的错误,我就不点出来了!只是帮你看了error: unknown typename 'carte_t'这个问题
展开全部
1. 函数原型声明语句
void convert(carte_t *list);
要移到 carte_t 类型定义之后
2. 不能这样为list所指的对象赋值:
*list =(carte_t){3,0.8};
可改为:
list->x=3;
list->y=0.8;
3.调用函数convert的参数类型不对
convert(*list);
应改为
convert(list);
void convert(carte_t *list);
要移到 carte_t 类型定义之后
2. 不能这样为list所指的对象赋值:
*list =(carte_t){3,0.8};
可改为:
list->x=3;
list->y=0.8;
3.调用函数convert的参数类型不对
convert(*list);
应改为
convert(list);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询