同样的代码,为什么会出错?keil+C51

void Display_jumping_heart(void)
{
    u8 a;
    for(a=0;a<16;a++)
    {
        HC595_SendData(address[a],address[a+16],big_heart[31-a],big_heart[15-a]);
    }
    HC595_SendData(0xff,0xff,0x00,0x00);
    delay(60000);
    for(a=0;a<16;a++)
    {
        HC595_SendData(address[a],address[a+16],small_heart[31-a],small_heart[15-a]);
    }
    HC595_SendData(0xff,0xff,0x00,0x00);
    delay(60000);
}

这段是可以编译,没有错误的,
但是:分成两个函数为什么就会出错?函数最开始已经声明了。

void Display_big_heart(void);
{
    u8 a;
    for(a=0;a<16;a++)
    {
        HC595_SendData(address[a],address[a+16],big_heart[31-a],big_heart[15-a]);
    }
    HC595_SendData(0xff,0xff,0x00,0x00);
}

void Display_small_heart(void);
{
    u8 a;
    for(a=0;a<16;a++)
    {
        HC595_SendData(address[a],address[a+16],small_heart[31-a],small_heart[15-a]);
    }
    HC595_SendData(0xff,0xff,0x00,0x00);
}


void Display_jumping_heart(void)
{
    Display_big_heart();
    delay(60000);
    Display_small_heart();
    delay(60000);
}

第二段前两个函数后面分号去掉

void Display_big_heart(void);
void Display_small_heart(void);

方法名后面有分号,导致编译失败。

void Display_big_heart(void)
{
    u8 a;
    for(a=0;a<16;a++)
    {
        HC595_SendData(address[a],address[a+16],big_heart[31-a],big_heart[15-a]);
    }
    HC595_SendData(0xff,0xff,0x00,0x00);
}
void Display_small_heart(void)
{
    u8 a;
    for(a=0;a<16;a++)
    {
        HC595_SendData(address[a],address[a+16],small_heart[31-a],small_heart[15-a]);
    }
    HC595_SendData(0xff,0xff,0x00,0x00);
}
 
void Display_jumping_heart(void)
{
    Display_big_heart();
    delay(60000);
    Display_small_heart();
    delay(60000);
}

哎呀我去。。。确实是。。。没注意