C语言 定义结构体 作为函数参数 总是报错显示 unknown typename 编译器是Codeblocks

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 定义结构体 作为函数参数 总是报错显示 unknown typename 编译器是Codeblocks相关的知识,希望对你有一定的参考价值。

鄙人刚刚开始学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);

你定义的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'这个问题

参考技术A 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);本回答被提问者采纳

以上是关于C语言 定义结构体 作为函数参数 总是报错显示 unknown typename 编译器是Codeblocks的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,结构体作为函数参数传递,详解?

C 语言结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 )

如何将不同类型的结构体作为一个函数的参数?

c语言中结构体变量做函数参数的问题

C 语言结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )

结构体数组怎么做函数参数