schedule () at schedule.c:31
31 int i = (last_task_nr == 0) ? last_task_nr = 1 : last_task_nr;
->這個就執行了妳打印的那壹句。
38 if (task[i] == NULL)
->這個就執行了妳打印的另外壹句。
因為沒有全部程序,不清楚 task、last_task_nr 究竟怎麽回事。
修改:
i的問題:
volatile int i = xxxxxxxx;
如果還有問題:妳可以:
例如 volatile int * volatile task;
出問題的都加上。
不懂的自己看書吧,基本的東西,我就不講課了。
其他:
int i = (last_task_nr == 0) ? last_task_nr = 1 : last_task_nr;//這裏就沒有執行
i++;
-> 下面這個更好理解,也更快(不考慮更多優化),考慮優化就變成了下面的);
int i;
if (!last_task_nr) {
last_task_nr=1;
}
i=last_task_nr+1;
-------------------------------------------------
++i 很可能和last_task_nr+1有固定的的等於或者不等於的關系,所以根本就不需要i,但是程序不完整不能確定。