简单程序毛病,帮看一下

[复制链接]
3135|8
 楼主| czhlcai 发表于 2007-3-11 09:18 | 显示全部楼层 |阅读模式
#include"reg52.h"
typedef unsigned char uchar;
uchar num1[]={1,3,5,7};
uchar num2[]={2,4,6};
main()
{
    uchar result;
    uchar func1();
    result=func1(num1,num2);(出错)
    while(1);
}                
uchar func1(uchar *p1,uchar *p2)
{
    return(*(p1+2)^*(p2+1));
}
用KEILC51,uV3版本,出现error C267: 'func1': requires ANSI-style prototype,我看不出毛病呀,调用FUNC1前我先函数说明uchar func1()再调用;
。若把FUNC1函数放到MAIN()前,再删除函数说明uchar func1();就没问题?刚用到C,见笑!
dai_weis 发表于 2007-3-11 09:29 | 显示全部楼层

函数声明错了

应该是:func1(uchar *p1,uchar *p2);
 楼主| czhlcai 发表于 2007-3-11 09:36 | 显示全部楼层

to:dai_weis

谢谢指点,按您说的没问题了。
可我有个疑问,我学的是TURBOC2.0的C,其中函数说明是这样的“函数说明语句中函数名后的圆括号()中没有形参表,即使带参函数也一样”,难道这个不适用单片机中的C语言定义吗?
dai_weis 发表于 2007-3-11 09:46 | 显示全部楼层

看一下Keil C中关于函数定义部分吧

TC 2.0 那些查不多都忘了,好像记得你的定义方式声明部分有些像传统C的定义,函数体部分像现在的定义方式,
呵呵十多年了,记不太清
不过一般都这样写:

存储类型 数据类型 函数名(形式参数名表)
{
  内部变量
  语句
}
 楼主| czhlcai 发表于 2007-3-11 10:13 | 显示全部楼层

还真不一样呀,看来要好好看看KEILC了

lixun00 发表于 2007-3-12 09:22 | 显示全部楼层

和turbo c2。0一样

rainbowwrh 发表于 2007-3-12 17:04 | 显示全部楼层

函数都还没声明就调用当然错了.

mohanwei 发表于 2007-3-12 19:05 | 显示全部楼层

编译器都会有点不一样,注意一下就可以了。

悠忽 发表于 2007-3-16 23:12 | 显示全部楼层

函数都还没声明就调用当然错了

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

本版积分规则

43

主题

136

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部