当前位置: 代码迷 >> 驱动开发 >> 驱动代码,左右赋值后,打印结果不同,该如何解决
  详细解决方案

驱动代码,左右赋值后,打印结果不同,该如何解决

热度:32   发布时间:2016-04-28 11:03:27.0
驱动代码,左右赋值后,打印结果不同
比如以下代码,

preturn->len = k_len; //已知 k_len = 1

for (i = 0; i < 8; i++)
{
  if (a != b) //已知a != b
  {
  printk("%d",preturn->len);
  printk("%d",k_len);
  }

}

以上代码中的k_len实际上是我统计的键盘同时按键的个数,preturn->len是我准备返回给应用层的,但是有时按下一个键以后,大部分情况是正常的,但有时pretuen->len打印的结果为0,k_len打印的结果为1,这个就不太明白了,谁能解释以下

------解决方案--------------------
考虑一下瞬态的变化:
当你执行第1句时,k_len=0
preturn->len = k_len;
printk("%d",preturn->len);
打印就为0。这期间,由于按键输入和中断接收,使k_len=1了 
于是 printk("%d",k_len);就打印出1了。
  相关解决方案