程序出错,不知道错在哪了,希望各位指教
/////////////////////////////////////////////////////////////////////////
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这个指针所指的内容传过去了,这是不对的
楼主要看清楚参数的类型,是要传值还是传指针,然后对应的传递就不会错了.