我在ROS kobuki节点(kobuki-auto-docking)中看到了这个C++函数。我想知道while循环是否是死代码?还是说它有时会被神秘地调用?
void AutoDockingROS::spin()
{
return;
while(!shutdown_requested_){;}
}
感谢您的帮助,
谢谢您的支持,
我在ROS kobuki节点(kobuki-auto-docking)中看到了这个C++函数。我想知道while循环是否是死代码?还是说它有时会被神秘地调用?
void AutoDockingROS::spin()
{
return;
while(!shutdown_requested_){;}
}
谢谢您的支持,
在C++中,return
后面的任何内容都不会被执行。
但是,在编写代码时应该尊重眼前的代码:
如果预处理器将#define
return
定义为特定的构建配置,则可能会运行代码。
有人可能正在盲目地将代码移植到Java。在Java中,finally
块中的代码会在return
之后运行。
开发人员保留该行代码以测试!shutdown_requested_
的语法有效性是有可能的。
这些情况都很少见(我曾经在生产环境中看到第一种情况),但如果您要进行大规模的重构工作,最好检查一下。
这相当于:
void AutoDockingROS::spin()
{
return;
// while(!shutdown_requested_){;}
}
实际上,程序员想留下一些代码作为提醒。这部分代码永远不会被执行。
return
语句之后的所有内容都不会被执行。
return
语句后面的代码只有在满足条件时才会被执行。请将代码放在return
语句之前。
return;
来修复一个 bug 或者其他问题(也许是无意中调用了spin
),然后就把它留在了代码库中。(该函数的意图显然是要一直 旋转 直到关闭) - nneonneo