打印

简单程序毛病,帮看一下

[复制链接]
2295|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的定义,函数体部分像现在的定义方式,
呵呵十多年了,记不太清
不过一般都这样写:

存储类型 数据类型 函数名(形式参数名表)
{
  内部变量
  语句
}

使用特权

评论回复
5
czhlcai|  楼主 | 2007-3-11 10:13 | 只看该作者

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

使用特权

评论回复
6
lixun00| | 2007-3-12 09:22 | 只看该作者

和turbo c2。0一样

使用特权

评论回复
7
rainbowwrh| | 2007-3-12 17:04 | 只看该作者

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

使用特权

评论回复
8
mohanwei| | 2007-3-12 19:05 | 只看该作者

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

使用特权

评论回复
9
悠忽| | 2007-3-16 23:12 | 只看该作者

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

136

帖子

0

粉丝