00:02
王永辉同学解决了这个学习啊,操作系统课程涉及的说他的一个问题啊,谈问题的话大概就是这样,就是在整个的这个前置课程章节中的话,有一段代码会涉及到从这个初始程序,然后切换到D0的进程,我们是通过这样的一个。序列去做的,但是呢,在后面执行这个led的时候呢,整个程序就。啊,就出现那个异常,然后在VS中的话,就会提示这样没有办法进行这个单步。然后他把工程发给我,我看了一下会就发现这个问题啊,嗯,怎么讲呢,就是。出错原因的话就是比较低级啊,但是确实不太容易找。好,那大体的原因的话就是这样啊,就是我在我们这个前置课这一块,我们是通过了简单的GDD表,然后将整个的这个系统所需要的这个,嗯,代码端和数据端这一块的这个数据结构啊,给它配置好了,然后呢,在这一块我们有这样的两块的东西啊,就是配置这个应用程序,我们要给他配置这个代码端和数据端的这个GDD这块的表象,然后我们在这里的话,实际上是希望指定它的这个表项是使用GDD表的第三项和。
01:11
第四项分别用作代码段和数据段。好。那么在具体。嗯,定义的时候呢,我们是通过在这个数组这一块,然后使用这个索引的方式啊,指定这个索引的数值,然后在后面加出画的数,我们就可以对这个指定的表象进行这个设置了,那么在这里的话,我们显然就是要求这个APP扣的除以八,它是应该是等于三,然后这个AB data s EG除以八的话要等于四,好那么我们看一下这个同学他这块怎么去做的啊,他在这里的话是用了这个24。然后货上三啊,这个三的话是表示权限,我们这里暂时不用管它的含义。嗯,然后。用这样的方式去定义的,那我们看一下,假设我们的这个APP code的这一块,它的这个值啊,放到这里去展开的话,那么这一块的话就变成什么样子呢?就是这一块的这个。
02:06
索引的这个计算啊,它就变成了这样子。就变成了24或上三,然后再除以八,那么在这里的话,可能就有同学会发现啊,这个三除以八的话,它们的优先级更高一点,所以它会先进行计算,那它计算出来之后,这个值就的话是零,然后再与这个24相或的话,那么此时它的这一块的这个数值啊,实际上就是变成了什么,变成了24。啊,等于下面的这个。变成了这样子。所以这块的话就有点问题啊,那因此就是问题的话,就出现在这块的红这块的计算上啊,它本来的这个要求的话,应该是得到这个三的。也就是说它这一块的红的话,实际上应该用这个括号啊,给它包起来。这里应该包起来,然后包起来之后,那么在这里进行这个计算的话呢,就变成了这个24或上三,然后再除以八。
03:06
好,那这样展开之后的话,我们看一下它的计算结果的话,就应该等于多少呢。这里的话应该是24或者三,然后再除以八,那这个值的话,就是这个最终的值啊,就是这个第三啊,就和我们要求的一样。那因此这个同学他显然的问题的话,就出现在这里啊,就是像我们在这里C语言的同形中定义一些红的时候,我们一定要注意里面,里面如果有这种计算啊,一些这个运算符计算的话,我们一定要注意把整体给它包含进来,那如果不包含的话,在可能在有的情况下,就相当于就像我们现在在这里啊,将这一块放到这里之后,如果这块没有进行这个用括号给它包含的话,那么此时就会像我们之前那样子就会啊,因为这个运算服优先级的问题啊,导致我们整个的这块。表达式的计算就出现了问题了,就是我们这个方框里的计算出现问题,所以我们啊一定要注意点好,那么在其他的情况下情况下,像这个宏这一块,比方说我们做一些这个带参数的宏,我们也要注意这样的问题,比方说我们啊,有的同学在做这个max AB的时候,他会这样写啊,A大于B。
04:14
然后返回A啊,这里是B,好,那么这样的话,在大部分情况下可能看不出来什么问题,比方说我们在使用的时候,使用MAX1和二,诶这个展开以后,它这个值就是一大于二,然后。这样去做对不对,我们举个例子啊。然后给到A这一块代码,看起来没有什么问题对吧。好,那假设我们。这一块的使用max的时候,我们改一下,我们改成什么呢?改成max变成了这个一加二和三加四。我们在使使用的时候,按这种方式去写入,那么我们看一下它当前的这个展开结果的话,就变成了一个非常奇怪一个东西啊,就变成这种那这样的一个。
05:01
嗯,展开结果的话,那就显然会导致我们这块编译出现这个失败的情况,那怎么样去解决这个问题呢?我们在这里同样需要用括号将相应的这个地方进行一个这样的一个包含,像我们在这里的话是将整个的这个值啊。给他。包含起来,那对于这个带红的这块参数的话,我们最好将参数也给他。用括号给它绑起来。好,那这样包起来之后呢,我们再看一下这个ma的展开,诶,它就变成了这样的一个结果啊,这个的话就是我们想要的这样的一个。Max的这样的一个功能。它不会导致变异出错,并且他的计算的话也是这个正确的,那因此就是提醒一下同学,就是在做这一块代码的时候,涉及到这个C语言红的时候呢。有些地方该加括号的就加括号,像这个参数的话也。要把这个括号啊给它加上去,你如果看一些这个C语言的教材的话,或者一些其他的这个资料的话,会看到啊,就是它会提示你啊,就是在这些地方一定要注意加上这个括号,避免出现一些这个奇怪的问题。
06:08
好,这个的话就是这个同学他在。啊,做这个学习我的课程的时候,我碰到的一个问题,我帮他解决了一下,基本上也比较快吧,不过的话,这个问题的话并不是太好找啊,也花了一些时间去找这个比较细小的问题。
我来说两句