我正确使用这些指针吗?我正在分配一些东西,但之后它立即为空
if ((*l).proc == NULL)
{
(*l).proc = current_process;
if(current_process == NULL)
{
__no_operation();
}
if((*l).proc == NULL)
{
__no_operation();
}
}
运行此代码时,我在两个无操作处添加了断点。然而,它只在两次中的第二次中断。这怎么可能?
if ((*l).proc == NULL)
{
(*l).proc = current_process;
if(current_process == NULL)
{
__no_operation();
}
if((*l).proc == NULL)
{
__no_operation();
}
}
When running this code, I added breakpoints at both no-ops. However, it only breaks at the second of the two. How is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
任何理智的编译器都会将这两个相同的块优化为单个块。它可能还会将两个条件优化为一个。如果您想看到两者单独运行,请将
puts("A");
添加到第一个,并将puts("B");
添加到第二个。Any sane compiler will have optimized these two identical blocks into a single block. It will probably also optimize the two conditionals into one. If you want to see both running separately, add
puts("A");
to the first andputs("B");
to the second.