免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 2364 | 回复: 20
打印 上一主题 下一主题

编译的时候提示错误,到底错在那里了,大家帮助看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-07 22:50 |只看该作者 |倒序浏览
typedef struct{
        char        CourseId[5];        //课程ID
        char        CourseName[30];        //课程名
        char        Score[5];                //成绩
}SCORE_DATA;

//成绩链表
typedef struct {
        SCORE_DATA        data;                //成绩记录
        struct SCORE_NODE        *pNext;
}SCORE_NODE;

e:\program files\microsoft visual studio\myprojects\dstdclass\dscore.h(15) : error C2371: 'SCORE_NODE' : redefinition; different basic types
        e:\program files\microsoft visual studio\myprojects\dstdclass\dscore.h(14) : see declaration of 'SCORE_NODE'
e:\program files\microsoft visual studio\myprojects\dstdclass\dscore.h(9) : error C2371: 'SCORE_DATA' : redefinition; different basic types
        e:\program files\microsoft visual studio\myprojects\dstdclass\dscore.h(9) : see declaration of 'SCORE_DATA'

论坛徽章:
0
2 [报告]
发表于 2005-06-08 08:35 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看


     struct SCORE_NODE *pNext;

中的struct去掉

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-06-08 09:25 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看

楼主用的typedef。呵呵,要好好理解这个关键字。

建议一般的structure不要使用typedef,没什么好处,多打个struct反而看的清楚。

论坛徽章:
0
4 [报告]
发表于 2005-06-08 09:28 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看

typedef到底是干什么的我还是没有理解
我只有在定义struct的时候才用到
用法和楼主类似

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-06-08 09:43 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看

typedef是用来包装类型的。用来包装structure当然可以。但个人认为,一般的structure还是不包装的好。多写一个struct使源文件容易读。

用来包装复杂的函数类型比较常见,比如signal函数:

  1.        #include <signal.h>;

  2.        typedef void (*sighandler_t)(int);

  3.        sighandler_t signal(int signum, sighandler_t handler);
复制代码

论坛徽章:
0
6 [报告]
发表于 2005-06-08 09:46 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看

typedef void (*sighandler_t)(int);
这句的意思是不是说sighandler_t是一个函数
返回类型是void,并且需要一个int型的参数

但好像8对阿。。。。。

论坛徽章:
0
7 [报告]
发表于 2005-06-08 09:48 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看

定义pNext的时候,SCORE_NODE还没有声明。用typedef的时候,用SCORE_NODE来定义SCORE_NODE自身是不合适的。
至于struct,可用可不用。
正解:

  1. #include <iostream.h>;
  2. typedef struct {
  3.    char CourseId[5];
  4.    char CourseName[15];
  5.    char Score[10];
  6. } SCORE_DATA;

  7. typedef struct _SCORE_NODE {
  8.    SCORE_DATA data;
  9.    struct _SCORE_NODE* pNext;
  10. } SCORE_NODE;
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-06-08 09:49 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看

原帖由 "bleem1998" 发表:
typedef void (*sighandler_t)(int);
这句的意思是不是说sighandler_t是一个函数
返回类型是void,并且需要一个int型的参数

但好像8对阿。。。。。


^_^,不是的,sighandler_t是一个函数指针。这个是我在man手册中拷出来的,不会错的。

论坛徽章:
0
9 [报告]
发表于 2005-06-08 09:52 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看

这么定义也可以:

  1. struct _SCORE_NODE {
  2.    SCORE_DATA data;
  3.    struct SCORE_NODE* pNext;
  4. } SCORE_NODE;
复制代码

论坛徽章:
0
10 [报告]
发表于 2005-06-08 09:53 |只看该作者

编译的时候提示错误,到底错在那里了,大家帮助看看

确实是一个指针
多崽多崽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP