8442|16

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于单片机语言c51和c语言的区别 [复制链接]

在vc++6.0环境下编的树的结构程序在keil环境下却有错误。
如:
#include
#include
#include
char MenuOne_Date[3][14]={"1 Module Text","2 Tools","3 About Me"};  
//这里和下面的MenuName[]改为unsigned 为什么有错?
char MenuTools_Date[4][11]={"1 SetTime","2 Dingshi","3 MiaoBiao","4 Book"};

struct NodeDate
{
        char seq;
        char MenuName[17];
};

struct MenuNode
{
        NodeDate data;       ///这里keil uvision说是有错误的
        struct MenuNode *parent;
        struct MenuNode *firstchild;
        struct MenuNode *nextbrd;
       
}*Previous,Module_Struct,Tools_Struct,AboutMe_Struct,SetTime_Struct,DingShi_Struct,MiaoBiao_Struct,Book_Struct;

void BuildNode(struct MenuNode * Self,struct MenuNode *Parent_Node,struct MenuNode *Firstchild_Node,
struct MenuNode *Nextbrd_Node,char seq,char MenuName[17])

{       
        Self->parent=Parent_Node;
        Self->firstchild=Firstchild_Node;
        Self->nextbrd=Nextbrd_Node;
        Self->data.seq=seq;
        strcpy(Self->data.MenuName,MenuName);
}

void Initial_MenuStruct(void)
{
        //第一层Menu
        BuildNode(&Module_Struct,NULL,&SetTime_Struct,&Tools_Struct,10,MenuOne_Date[0]);
        BuildNode(&Tools_Struct,NULL,NULL,&AboutMe_Struct,11,MenuOne_Date[1]);
        BuildNode(&AboutMe_Struct,NULL,NULL,&Module_Struct,12,MenuOne_Date[2]);
        Previous=&Module_Struct;
        //Module子层Menu
        BuildNode(&SetTime_Struct,&Module_Struct,NULL,&DingShi_Struct,20,MenuTools_Date[0]);
        BuildNode(&DingShi_Struct,&Module_Struct,NULL,&MiaoBiao_Struct,21,MenuTools_Date[1]);
        BuildNode(&MiaoBiao_Struct,&Module_Struct,NULL,&Book_Struct,22,MenuTools_Date[2]);
        BuildNode(&Book_Struct,&Module_Struct,NULL,&SetTime_Struct,23,MenuTools_Date[3]);
}

void main(void)
{
        Initial_MenuStruct();
        for(int i=0;i<3;i++)
        {
                //cout<data.MenuName<<"     "<data.seq<                 printf("%s\t%d\n",Previous->data.MenuName,Previous->data.seq);
                Previous=Previous->nextbrd;
        }
        Previous=Module_Struct.firstchild;
        for(i=0;i<4;i++)
        {
                printf("%s\t%d\n",Previous->data.MenuName,Previous->data.seq);
                Previous=Previous->nextbrd;
        }
}

这个程序在vc是没问题的。
但在keil环境下 我删除了这里的main函数(我的工程在其他.c中是有main的),结构体没改,进行编译。出现错误:
struct MenuNode
{
        NodeDate data;
        struct MenuNode *parent;
        struct MenuNode *firstchild;
        struct MenuNode *nextbrd;
       
}
error 1: syntax error near 'NodeDate'
error 2: missing ';'before 'data'

请问是什么原因啊 在线等待
此帖出自编程基础论坛

最新回复

NodeDate data;       ///这里keil uvision说是有错误的 “data”在KEIL uVension2的C51里是一种数据类型关键字  详情 回复 发表于 2007-3-7 18:34
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
C,不是C++

如果不用typedef 就得用struct MenuNode.
struct MenuNode{
    ...
};//这里得有个分号
此帖出自编程基础论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
#include

KEIL里面没有这个库!!
单片机不是PC
此帖出自编程基础论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
讲先看一下单片机体系结构再写程序,至少过一遍

C51里具体与标准的差异,请看安装目录下的HEL文件夹里的C51.PDF

里面有C51的完全说明...
此帖出自编程基础论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
哦 先说明一下:
1  那c++的库iostream是我用vc做的 不好意思 发帖的时候没删掉!
2  struct MenuNode{}后面有';'了;
3  我就想知道那个错误在keil怎么改。其他与单片机参数接口问题我已经做好了。
此帖出自编程基础论坛
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

6
 
NodeDate data;       ///这里keil uvision说是有错误的

C51里得用struct NodeDate.

error 1: syntax error near 'NodeDate'//这个的话有可能是编译类型设置的问题,把项目设置成large模式看看

在option 里更改项目属性中的target里memory modle里进行设置...
此帖出自编程基础论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
用了这个struct NodeDate data;造成很多错误。不好意思 我还是不懂。
不知道您能否在keil uvision中调试一下 在发那段代码来啊
谢谢了!
此帖出自编程基础论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 
我们做的菜单不是用你的这种组织方式...

呵呵
此帖出自编程基础论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

9
 
struct NodeDate data;       ///这里keil uvision说是有错误的

帅哥,找着一个问题
data是C51里的一个关键字
此帖出自编程基础论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

10
 
#include
//#include
#include
char MenuOne_Date[3][14]={"1 Module Text","2 Tools","3 About Me"};  
//这里和下面的MenuName[]改为unsigned 为什么有错?
char MenuTools_Date[4][11]={"1 SetTime","2 Dingshi","3 MiaoBiao","4 Book"};

struct NodeDate
{
        char seq;
        char MenuName[17];
};

struct MenuNode
{
        struct NodeDate data1;       ///这里keil uvision说是有错误的
        struct MenuNode *parent;
        struct MenuNode *firstchild;
        struct MenuNode *nextbrd;
       
}*Previous,Module_Struct,Tools_Struct,AboutMe_Struct,SetTime_Struct,DingShi_Struct,MiaoBiao_Struct,Book_Struct;

void BuildNode(struct MenuNode * Self,struct MenuNode *Parent_Node,struct MenuNode *Firstchild_Node,
struct MenuNode *Nextbrd_Node,char seq,char MenuName[17])

{       
        Self->parent=Parent_Node;
        Self->firstchild=Firstchild_Node;
        Self->nextbrd=Nextbrd_Node;
        Self->data1.seq=seq;
        strcpy(Self->data1.MenuName,MenuName);
}

void Initial_MenuStruct(void)
{
        //第一层Menu
        BuildNode(&Module_Struct,NULL,&SetTime_Struct,&Tools_Struct,10,MenuOne_Date[0]);
        BuildNode(&Tools_Struct,NULL,NULL,&AboutMe_Struct,11,MenuOne_Date[1]);
        BuildNode(&AboutMe_Struct,NULL,NULL,&Module_Struct,12,MenuOne_Date[2]);
        Previous=&Module_Struct;
        //Module子层Menu
        BuildNode(&SetTime_Struct,&Module_Struct,NULL,&DingShi_Struct,20,MenuTools_Date[0]);
        BuildNode(&DingShi_Struct,&Module_Struct,NULL,&MiaoBiao_Struct,21,MenuTools_Date[1]);
        BuildNode(&MiaoBiao_Struct,&Module_Struct,NULL,&Book_Struct,22,MenuTools_Date[2]);
        BuildNode(&Book_Struct,&Module_Struct,NULL,&SetTime_Struct,23,MenuTools_Date[3]);
}

void main(void)
{
    int i=0;
        Initial_MenuStruct();
        for(i=0;i<3;i++)
        {
                //cout<data.MenuName<<"     "<data.seq<                 printf("%s\t%d\n",Previous->data1.MenuName,Previous->data1.seq);
                Previous=Previous->nextbrd;
        }
        Previous=Module_Struct.firstchild;
        for(i=0;i<4;i++)
        {
                printf("%s\t%d\n",Previous->data1.MenuName,Previous->data1.seq);
                Previous=Previous->nextbrd;
        }
}
//这个编译通过了,要把设置成large模式.
此帖出自编程基础论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

11
 
谢谢了 data是关键字 这真的没想过哦  笨死了 呵呵
struct NodeDate data1; 这个结构我刚才在网上下载的c51电子书说的却是跟c语言一样的。

把设置成large模式是因为我的程序和menu菜单占rom太大了?

我这个小工程是用的at89s52做的,除了这个程序外还有其他键盘lcd等程序的
4k的rom不知道能装下去不?
此帖出自编程基础论坛
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

12
 
装不下去就想办法压空间..

再不行就上ASM

再不行就只能减功能/换片子了...
此帖出自编程基础论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

13
 
这个是RAM不够,ROM的4K还是没用完的...
此帖出自编程基础论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
好 谢谢了
此帖出自编程基础论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

15
 
到时候在设置一下优化代码,4k差不多
此帖出自编程基础论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

16
 
mark~
此帖出自编程基础论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

17
 
NodeDate data;       ///这里keil uvision说是有错误的
“data”在KEIL uVension2的C51里是一种数据类型关键字
此帖出自编程基础论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表