标题:
不简单的requires ANSI-style prototype报错
[打印本页]
作者:
ESJIAN
时间:
2024-3-14 22:54
标题:
不简单的requires ANSI-style prototype报错
子函数皆报错: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); //显示初始化函数
}
作者:
ESJIAN
时间:
2024-3-14 22:56
好像函数重定义那块出了问题.....
作者:
Hephaestus
时间:
2024-3-15 00:43
你声明的函数原型跟你使用的函数不一样!
作者:
ESJIAN
时间:
2024-3-15 17:49
Hephaestus 发表于 2024-3-15 00:43
你声明的函数原型跟你使用的函数不一样!
除了声明时候没有说明传参类型哪里还不一样啊?我以前也是这么写的也没报错啊
作者:
ESJIAN
时间:
2024-3-15 19:27
Hephaestus 发表于 2024-3-15 00:43
你声明的函数原型跟你使用的函数不一样!
哦,我后面在声明时候补全了是否需要传入参数以及传参的类型,报错消失了,C89对于这块这么严格么
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1