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);
}
展开
 我来答
夜礼服假面MP
2014-11-06 · TA获得超过3436个赞
知道大有可为答主
回答量:1034
采纳率:77%
帮助的人:305万
展开全部
你定义的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'这个问题

笃侠6A
推荐于2017-10-06 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3110万
展开全部
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);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式