打印
[开发工具]

求助putchar函数声明

[复制链接]
6129|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaojinggg|  楼主 | 2011-9-24 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
extern int putchar(int c);这句在我自己写的.h文件里面,然后main函数编译的时候出错了,
error:  #79: expected a type specifier
请教高手是怎么回事
沙发
airwill| | 2011-9-24 09:54 | 只看该作者
那你的main 函数里怎么调用 putchar 的呢?

使用特权

评论回复
板凳
zhaojinggg|  楼主 | 2011-9-24 10:02 | 只看该作者
这个程序在别人的KEIL3 里面是好使的,我的是keil4,就不好使了,程序应该是没有什么问题的,就这一个错误,其他都没问题

使用特权

评论回复
地板
zhaojinggg|  楼主 | 2011-9-24 10:11 | 只看该作者
这么调用的    putchar('%');
int putchar(int c)
{   unsigned char xx,yy;
    unsigned short qsdm;
    if(Terminal==1)                  
       {c=(c-0x20)&0x7f;              
        FM240128_D_PUT((char)c);
        FM240128_C_PUT(0xc0);        
        xbak=0;
       }
    else if(Terminal==2)            
       {UART_TXD(0,(char)c);
        xbak=0;
       }
    else                             
       {if(Font==0)               
           {xx=10;
            yy=8;
....
            else if(DisMode==1)
               {Vertical+=yy;
                if(Vertical>=FM_G_Y_MAX)
                   {Vertical=0;
                    Horizon=Horizon+xx;
                    if(Horizon>=FM_G_X_MAX) Horizon=0;
                   }
               }
            xbak=0;
           }
       }
    return(0);  
}
这是函数定义

使用特权

评论回复
5
zhaojinggg|  楼主 | 2011-9-24 10:22 | 只看该作者
我的版本是keil mdk4.12

使用特权

评论回复
6
airwill| | 2011-9-24 11:49 | 只看该作者
怎么实现倒是没有关系的.

putchar('%');
这么调用应该没有问题呀.
能否把整个 79行 的代码发上来?

使用特权

评论回复
7
zhaojinggg|  楼主 | 2011-9-24 12:16 | 只看该作者
这个函数将近200行,#79是错误代码吧
int putchar(int c)
{   unsigned char xx,yy;
    unsigned short qsdm;
    if(Terminal==1)                 
       {c=(c-0x20)&0x7f;              
        FM240128_D_PUT((char)c);
        FM240128_C_PUT(0xc0);      
        xbak=0;
       }
    else if(Terminal==2)           
       {UART_TXD(0,(char)c);
        xbak=0;
       }
    else                           
       {if(Font==0)                  
           {xx=10;
            yy=8;
           }
        else if(Font==1)           
           {xx=12;
            yy=12;
           }
        else if(Font==2)            
           {xx=16;
            yy=16;
           }
        else if(Font==3)         
           {xx=24;
            yy=24;
           }
        else if(Font==4)            
           {xx=32;
            yy=33;
           }
        else if(Font==5)           
           {xx=35;
            yy=37;
           }
                  
        if(c<32)                  
           {xbak=0;
            if(c=='\n') Horizon=0;   
            else if(c=='\r')      
               {if(DisMode==0)      
                               {Vertical+=yy;
                    if(Vertical>=FM_G_Y_MAX) Vertical=0;
                   }
                else if(DisMode==1)
                               {Horizon+=xx;
                                    if(Horizon>=FM_G_X_MAX) Horizon=0;
                   }
               }
            else if(c=='\t')         
               {if(DisMode==0)      
                               {Horizon+=(xx+xx);
                    if(Horizon>=FM_G_X_MAX)
                       {Horizon=0;
                                        Vertical+=yy;
                        if(Vertical>=FM_G_Y_MAX) Vertical=0;
                       }
                   }
                else if(DisMode==1)
                   {Vertical+=(yy+yy);
                    if(Vertical>=FM_G_Y_MAX)
                       {Vertical=0;
                                        Horizon+=xx;
                        if(Horizon>=FM_G_X_MAX) Horizon=0;
                       }
                   }
               }
           }
        else if(c<0xa0)
           {xbak=0;
            if(Horizon+xx/2>FM_G_X_MAX)
               {Horizon=0;
                            Vertical+=yy;
                if(Vertical>=FM_G_Y_MAX) Vertical=0;
               }
            if(Font==0)
               {if((c>=0x20)&&(c<='?'))
                   {c=c-0x20;
                    LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M0[c]);
                   }
               }
            else if(Font==1)
               {if((c>=0x20)&&(c<=0x80))
                   {c=c-0x20;
                    LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M1[c]);
                   }
               }
            else if(Font==2)
               {if((c>=0x20)&&(c<=0x80))
                   {c=c-0x20;
                    LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M2[c]);
                   }
               }
            else if(Font==3)
               {if(c==0x20)
                   {c=10;
                    LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M3[c]);
                   }
                else if(c=='.')
                   {c=11;
                    LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M3[c]);
                   }
                else if((c>='0')&&(c<='9'))
                   {c=c-'0';
                    LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M3[c]);
                   }
               }
            if(DisMode==0)      
               {Horizon=Horizon+xx/2;
                if(Horizon>=FM_G_X_MAX)
                   {Horizon=0;
                                Vertical+=yy;
                    if(Vertical>=FM_G_Y_MAX) Vertical=0;
                   }
               }
            else if(DisMode==1)  
               {Vertical+=yy;
                if(Vertical>=FM_G_Y_MAX)
                   {Vertical=0;
                    Horizon=Horizon+xx;
                    if(Horizon>=FM_G_X_MAX) Horizon=0;
                   }
               }
           }
        else if(xbak==0) xbak=(char)c;
        else
           {if(Horizon+xx>FM_G_X_MAX)
               {Horizon=0;
                            Vertical+=yy;
                if(Vertical>=FM_G_Y_MAX) Vertical=0;
               }
            if(Font==1)
               {for(qsdm=0;qsdm<num1_max;qsdm++)
                   {if((xbak==code1[qsdm].num1[0])&&(c==code1[qsdm].num1[1])) break;
                   }
                if(qsdm!=num1_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code1[qsdm].HANZI1);
               }
            else if(Font==2)
               {for(qsdm=0;qsdm<num2_max;qsdm++)
                   {if((xbak==code2[qsdm].num2[0])&&(c==code2[qsdm].num2[1])) break;
                   }
                if(qsdm!=num2_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code2[qsdm].HANZI2);
               }
            else if(Font==3)
               {for(qsdm=0;qsdm<num3_max;qsdm++)
                   {if((xbak==code3[qsdm].num3[0])&&(c==code3[qsdm].num3[1])) break;
                   }
                if(qsdm!=num3_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code3[qsdm].HANZI3);
               }
            else if(Font==4)
               {for(qsdm=0;qsdm<num4_max;qsdm++)
                   {if((xbak==code4[qsdm].num4[0])&&(c==code4[qsdm].num4[1])) break;
                   }
                if(qsdm!=num4_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code4[qsdm].HANZI4);
               }
            else if(Font==5)
               {for(qsdm=0;qsdm<num5_max;qsdm++)
                   {if((xbak==code5[qsdm].num5[0])&&(c==code5[qsdm].num5[1])) break;
                   }
                if(qsdm!=num5_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code5[qsdm].HANZI5);
               }
            if(DisMode==0)      
               {Horizon=Horizon+xx;
                if(Horizon>=FM_G_X_MAX)
                   {Horizon=0;
                                Vertical+=yy;
                    if(Vertical>=FM_G_Y_MAX) Vertical=0;
                   }
               }
            else if(DisMode==1)  
               {Vertical+=yy;
                if(Vertical>=FM_G_Y_MAX)
                   {Vertical=0;
                    Horizon=Horizon+xx;
                    if(Horizon>=FM_G_X_MAX) Horizon=0;
                   }
               }
            xbak=0;
           }
       }
    return(0);  
}
这是这个函数的定义,应该是没有问题的

使用特权

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

本版积分规则

3

主题

10

帖子

0

粉丝