比如以下代码,
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了。