KEIL 中的一个警告

my_westlife 2011-10-19 12:29:15
写了一个函数,但是在编译的时候出现警告说:参数未被使用:
函数如下:
void Find_Addr(uint8 k,uint8 addr, uint8 j)
{
switch(k)
{
case 1:
addr=38;
j = 0x10;
break;
case 2:
addr= 0;
j= 0x10;
break;
case 3:
addr = 1;
j = 0x10;
break;
case 4:
addr = 2;
j = 0x10;
break;
case 5:
addr = 3;
j=0x10;
break;
case 6:
addr = 4;
j=0x10;
break;
case 7:
addr = 5;
j=0x10;
break;
case 8:
addr =6;
j = 0x10;
break;
case 9:
addr = 7;
j = 0x10;
break;
case 10:
addr= 8;
j = 0x10;
break;
case 11:
addr =9;
j =0x10;
break;
case 12:
addr = 11;
j= 0x10;
break;
case 13:
addr = 12;
j= 0x10;
break;
case 14:
addr =13;
j =0x10;
break;
case 15:
addr = 14;
j = 0x10;
break;
case 16:
addr = 15;
j = 0x10;
break;
case 17:
addr = 16;
j = 0x10;
break;
case 18:
addr = 17;
j = 0x10;
break;
case 19:
addr = 18;
j = 0x10;
break;
case 20:
addr = 19;
j = 0x10;
break;
case 21:
addr = 20;
j =0x10;
break;
case 22:
addr = 21;
j = 0x10;
break;
case 23:
addr = 37;
j = 0x10;
break;
case 24:
addr = 36;
j = 0x10;
break;
case 25:
addr = 35;
j = 0x10;
break;
case 26:
addr = 34;
j=0x10;
break;
case 27:
addr = 33;
j = 0x10;
break;
case 28:
addr = 32;
j = 0x10;
break;
case 29:
addr = 31;
j = 0x10;
break;
case 30:
addr = 30;
j = 0x10;
break;
case 31:
addr = 29;
j =0x10;
break;
case 32:
addr = 28;
j =0x10;
break;
case 33:
addr = 27;
j=0x10;
break;
case 34:
addr = 26;
j = 0x10;
break;
case 35:
addr = 25;
j = 0x10;
break;
case 36:
addr = 24;
j =0x10;
break;

case 37:
addr =23;
j = 0x10;
break;
case 38:
addr = 22;
j =0x10;
break;
case 39:
addr = 21;
j= 0x10;
break;
case 40:
addr = 21;
j = 0x12;
break;
case 41:
addr = 22;
j = 0x12;
break;
case 42:
addr =23;
j= 0x12;
break;
case 43:
addr = 24;
j = 0x12;
break;
case 44:
addr = 25;
j =0x12;
break;

case 45:
addr = 26;
j = 0x12;
break;
case 46:
addr = 27;
j = 0x12;
break;
case 47:
addr = 28;
j = 0x12;
break;
case 48:
addr = 29;
j = 0x12;
break;
case 49:
addr =30;
j =0x12;
break;
case 50:
addr = 31;
j = 0x12;
break;
case 51:
addr = 32;
j =0x12;
break;
case 52:
addr = 33;
j = 0x12;
break;
case 53:
addr = 34;
j = 0x12;
break;
case 54:
addr = 35;
j = 0x12;
break;
case 55:
addr = 36;
j =0x12;
break;
case 56:
addr = 37;
j = 0x12;
break;
case 57:
addr = 20;
j = 0x12;
break;
case 58:
addr = 19;
j = 0x12;
break;
case 59:
addr = 18;
j= 0x12;
break;
case 60:
addr = 17;
j =0x12;
break;
case 61:
addr =16;
j = 0x12;
break;
case 62:
addr = 15;
j =0x12;
break;
case 63:
addr = 14;
j = 0x12;
break;
case 64:
addr = 13;
j = 0x12;
break;
case 65:
addr = 12;
j = 0x12;
break;
case 66:
addr = 11;
j = 0x12;
break;
case 67:
addr = 10;
j = 0x12;
break;
case 68:
addr = 9;
j = 0x12;
break;
case 69:
addr = 8;
j = 0x12;
break;
case 70:
addr = 7;
j = 0x12;
break;
case 71:
addr = 6;
j = 0x12;
break;
case 72:
addr = 5;
j = 0x12;
break;
case 73:
addr = 4;
j = 0x12;
break;
case 74:
addr = 3;
j = 0x12;
break;
case 75:
addr = 2;
j = 0x12;
break;
case 76:
addr = 1;
j = 0x12;
break;
case 77:
addr = 0;
j = 0x12;
break;
}

}
提示addr和j未被使用,这是为什么?
...全文
56 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oo 2011-10-19
  • 打赏
  • 举报
回复
你这个代码写的,一长串case语句

我看addr和j跟k还是有规律的,可以用几个if语句来判定,如果真是没规律,弄一个大表格比这case语句好看多了。



addr和j都是传入参数,你直接赋值把他们给改了,当然相当于没有使用了
另外你给这个addr和j赋值后又传不出去的,这代码白干了

想传出去得用指针,void Find_Addr(uint8 k,uint8 *addr, uint8 *j)

然后代码里: *addr = ???; *j = ???;
my_westlife 2011-10-19
  • 打赏
  • 举报
回复
没有人?我在顶!给的错误号是:#D-550上面写错了。
qq120848369 2011-10-19
  • 打赏
  • 举报
回复
话说除了形参问题,你为什么不把这些case存到数组里。。。用下标直接就一行代码。。。
hulongchuan 2011-10-19
  • 打赏
  • 举报
回复
2楼说的对,参数传进去得只是addr和j的一个副本,所以你再怎么修改也没用!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧