首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

程序出错,不知道错在哪了,希望各位指教解决方法

2012-02-11 
程序出错,不知道错在哪了,希望各位指教///////////////////////////////////////////////////////////////

程序出错,不知道错在哪了,希望各位指教
/////////////////////////////////////////////////////////////////////////
void   DrawMenuButton(int   x,int   y,char   *mat1,char   *mat2,char   *mat3,char   *mat4,int   status)
{
      switch(status)
      {
                case   onNormal:
                        setfillstyle(1,RED);
                        bar(x,y,x+100,y+30);/*   按钮主色绘制填充   */
                        setfillstyle(1,DARKGRAY);
                        bar(x+4,y+31,x+104,y+34);/*   底线阴影   */
                        bar(x+101,y+4,x+104,y+34);/*   侧线阴影   */
                        rectangle(x+5,y+5,x+95,y+25);/*   按钮内框绘制   */
////57///       drawmat(*mat1,16,x+10,y+7,WHITE);
                        drawmat(*mat2,16,x+31,y+7,WHITE);
                        drawmat(*mat3,16,x+52,y+7,WHITE);
                        drawmat(*mat4,16,x+73,y+7,WHITE);
                        break;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
        DrawMenuButton(100,230,gong16L,zi16L,lu16L,ru16S,onNormal);
////////////////////////////////////////////////////////////////////
void   drawmat(char   *mat,int   matsize,int   x,int   y,int   color)
/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/
{
    int   i,   j,   k,   n;
    n   =   (matsize   -   1)   /   8   +   1;
    for(j   =   0;   j   <   matsize;   j++)
        for(i   =   0;   i   <   n;   i++)
            for(k   =   0;k   <   8;   k++)
                if(mat[j   *   n   +   i]   &   (0x80   > >   k))     /*测试为1的位则显示*/
                    putpixel(x   +   i   *   8   +   k,   y   +   j,   color);
}
//////////////////////////////////////////////////////////

贴了程序片段,函数参数gong16L等是点阵字符数组名

但是调用后编译出现警告  
警告   main.c   57:   不可移动的指针(地址常数)转换在   DrawMenuButton   函数中
不知道是什么原因   ,希望大家指教

[解决办法]
drawmat(*mat1,16,x+10,y+7,WHITE);

-〉drawmat(mat1,16,x+10,y+7,WHITE);
[解决办法]
void drawmat(char *mat,int matsize,int x,int y,int color)
这个函数的第一个参数就是个指针类型的
你调用的时候也要传一个指针类型的参数过去
比如mat1
如果你在mat1前面加上*号,相当于把mat1这个指针所指的内容传过去了,这是不对的
楼主要看清楚参数的类型,是要传值还是传指针,然后对应的传递就不会错了.

热点排行