
1. 无goto语句rc count; // 没有 goto直接顺序执行 unlock_exit: mutex_unlock(shutter_lock);2.有goto语句if (rc) { goto pwr_dwn; } pwr_dwn: cam_ois_power_down(o_ctrl); end: cam_common_mem_free(csl_packet); put_ref: cam_mem_put_cpu_buf(dev_config.packet_handle); return rc;C语言goto跳转到标签后是顺序执行没有return或break就会fall-through.即执行完pwr_dwn标签后会继续执行end:和put_ref:标签最后走return rc;3.不使用函数返回值if (rc) { goto pwr_dwn; } pwr_dwn: cam_ois_power_down(o_ctrl); static int cam_ois_power_down(struct cam_ois_ctrl_t *o_ctrl) { return rc; }由于未使用cam_ois_power_down()返回值则执行完此函数后只是return 返回到标签pwr_dwn继续执行下个标签。if中的rc不会被覆盖。若要覆盖可以修改成pwr_dwn: rc cam_ois_power_down(o_ctrl);