找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 590|回复: 4
收起左侧

不简单的requires ANSI-style prototype报错

[复制链接]
ID:1113035 发表于 2024-3-14 22:54 | 显示全部楼层 |阅读模式
子函数皆报错:KMS.c(28): error C267: 'lcd_control': requires ANSI-style prototype

我已经在函数的使用前声明了函数但是为什么还是报错?

#include<reg51.h>

#define unchar unsigned char
#define unint unsigned int
unchar code_table[6]="ESJIAN";              //少了两逗号
unchar code_table2[]="摆烂";     //一个中文两个字节存储

sbit LCDE =P2^7;
sbit RS=P2^6;
sbit RW=P2^5;

void delayms();
void lcd_control();      //例程上此处未加入中括号,思考是否可以
void lcd_data();
void lcd_init();         //此处漏掉逗号导致一堆报错





void main()            //最好不要用uchar main
{
    unint num;         
          lcd_init();        
          lcd_control(0X80);     // 'lcd_control': requires ANSI-style prototype:在上一行不该传参的函数传参
    for(num=0;num<=5;num++)
    {
                        lcd_data(code_table[num]);   //字符数组的索引方式为此
      delayms(5);
    }
    for(num=0;num<8;num++)
    {
        lcd_data(code_table2[num]);
        delayms(5);
    }
}

void delayms(unint z)                  //创建延迟函数,以ms为步进单位
{
        unint x,y;                         //此处不能重定义传入变量
    for ( x = z; x>0 ; x--)
    {
        for(y=110;y>0;y--);
    }

}
void lcd_control(unchar com)
{
        RS=0;
        P0=com;
        delayms(5);
        LCDE=1;
        delayms(5);
        LCDE=0;

}
        void lcd_data(unchar datad[])   // syntax error near 'void', expected '__asm':上一行少打括号
{
    RS=1;
    P0=datad;
    delayms(5);
    LCDE=1;
    delayms(5);
    LCDE=0;    //执行完该执行的之后,进入函数前的寄存器是什么状态,那么我们就是什么状态
}

void lcd_init()
{
    LCDE=0;             //使能低电平,激活LCD接收数据或者命令的初始状态
    lcd_control(0x38);
    lcd_control(0x0c);
    lcd_control(0x06);
    lcd_control(0x01);  //显示初始化函数
}

回复

使用道具 举报

ID:1113035 发表于 2024-3-14 22:56 | 显示全部楼层
好像函数重定义那块出了问题.....
回复

使用道具 举报

ID:883242 发表于 2024-3-15 00:43 | 显示全部楼层
你声明的函数原型跟你使用的函数不一样!
回复

使用道具 举报

ID:1113035 发表于 2024-3-15 17:49 来自手机 | 显示全部楼层
Hephaestus 发表于 2024-3-15 00:43
你声明的函数原型跟你使用的函数不一样!

除了声明时候没有说明传参类型哪里还不一样啊?我以前也是这么写的也没报错啊
回复

使用道具 举报

ID:1113035 发表于 2024-3-15 19:27 | 显示全部楼层
Hephaestus 发表于 2024-3-15 00:43
你声明的函数原型跟你使用的函数不一样!

哦,我后面在声明时候补全了是否需要传入参数以及传参的类型,报错消失了,C89对于这块这么严格么
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表