c - 在 Switch-Case 构造中使用“return”与“break”有什么好处?
问题描述
我正在研究一个 32 位 MCU 的代码,其中我看到一个 Switch-case 构造,它只在每个 case 中使用“return”而不是通常的“break”语句。这样做有什么好处?
通常所有的 Switch-case 语句都使用 break 来退出。但是,如果使用“return”而不是“break”,它会提供更快的代码或更小的代码,或者以这种方式执行它的其他好处?
switch (adv_mode)
{
case BLE_ADV_MODE_DIRECTED_HIGH_DUTY:
if ( (p_advertising->adv_modes_config.ble_adv_directed_high_duty_enabled)
&& (!p_advertising->adv_modes_config.ble_adv_extended_enabled)
&& (peer_addr_is_valid))
{
return BLE_ADV_MODE_DIRECTED_HIGH_DUTY;
}
// Fallthrough.
case BLE_ADV_MODE_DIRECTED:
if ((p_advertising->adv_modes_config.ble_adv_directed_enabled) && peer_addr_is_valid)
{
return BLE_ADV_MODE_DIRECTED;
}
// Fallthrough.
case BLE_ADV_MODE_FAST:
if (p_advertising->adv_modes_config.ble_adv_fast_enabled)
{
return BLE_ADV_MODE_FAST;
}
// Fallthrough.
case BLE_ADV_MODE_SLOW:
if (p_advertising->adv_modes_config.ble_adv_slow_enabled)
{
return BLE_ADV_MODE_SLOW;
}
// Fallthrough.
default:
return BLE_ADV_MODE_IDLE;
}
我希望位'return'和'break'会给出相同的结果。所以这只是程序员使用的偏好。
解决方案
return
离开所在的函数switch
并跳回其调用者。
break
只留下switch
执行后的下一条语句。
在所示情况下,该函数返回某种模式。如果break
已使用此结果的变量,则必须设置并在函数结束时返回。有时开发人员发现这太多了。
推荐阅读
- embedded - 如何使用来自 Q4X 模拟激光传感器的电压计算距离
- python-3.x - 启动不同的脚本作为线程知道脚本的名称
- c++ - 变量模板的显式特化
- swift - SwiftUI:类似 UITextField 的属性
- angular - 在 Angular 中获取选定的名称选项卡
- javascript - 一次下载两个 URL,但在一个完成后立即处理
- json - 在颤振中使用 REST API 将新用户添加到 wordpress
- python - C++ 和 Python 实现之间的不同伪随机数
- mysql - mysqldump后mysql数据库大小不同?
- spring - 如何在 JPA 中获取“按区域计算实体”的列表?