C/C++ 条件返回语句[重复]

2023-11-25

我正在研究嵌入式程序,在某些情况下,如果没有条件,我想尽快从函数返回。如果我有以下代码并且我正在进行嵌入式编程:

foo() {
   if (a < b) {
       return 0;  // bail, since condition is met
   } else {
       // lots of calculations in this block
   }
   return 1;
}

我的问题是,有多个 return 语句是否不好?这是不好的做法吗?有更好的方法吗? MISRA 对此有什么说法吗?

注意:这个问题是嵌入式系统特有的,与 MISRA 有关,而不仅仅是 C/C++

谢谢...


MISRA 需要单个返回语句:

(MISRA,规则 14.7:必需)“函数应在函数末尾有一个退出点”

现在,我个人认为这不是一个好的规则。尽量减少 return 语句的数量,但在增强代码可读性时使用 return 语句。

例如保护条款可以让你的代码更干净、更具可读性。

我建议您阅读这篇文章duffing(从上到下写代码):

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C/C++ 条件返回语句[重复] 的相关文章

随机推荐

  • 如何在ASP.net Core中添加基于环境的DbContext

    这就是我当前在 Startup cs 的 ConfigureServices 方法中添加 DbContext 的方式 public void ConfigureServices IServiceCollection services ser
  • 遵循 docker-compose 教程时没有创建 django 应用程序

    我正在遵循 docker compose 教程 尝试找出如何部署 django 应用程序 http docs docker com compose django 一切都很顺利 应用程序甚至可以工作 但是 django 项目文件夹compos
  • 等待 Console.ReadLine()

    我目前正在构建一个异步控制台应用程序 其中我创建了类来处理应用程序的不同区域 我创建了一个 InputHandler 类 我设想它会等待 Console ReadLine 输入 但是 您不能等待这样的函数 因为它不是异步的 我当前的解决方案
  • 如何正确对 [模板化] C++ 程序进行基准测试

    我现在确实需要优化 C 代码 我正在编写一个分子模拟库 我需要添加一个新功能 我过去已经尝试添加此功能 但随后我使用了在嵌套循环中调用的虚拟函数 我对此有不好的感觉 第一次实施证明这是一个坏主意 然而 这对于测试这个概念来说是可以的 背景
  • 通过正则表达式仅允许字母和“特殊”字母(éèà 等)

    我正在尝试匹配一个字符串以查看它是否仅由字母组成 各种字母都应该被允许 所以典型的a zA Z 但是也 etc 我尝试将其与以下正则表达式进行匹配 S 但这也允许像这样的角色 lt gt 等等 这些显然是不属于名字的字符 当我只想允许字母和
  • varchar 是否会因数据碎片而导致性能下降?

    数据库引擎如何在内部处理 varchar 列 对于定义为的列char 100 DBMS 在磁盘上分配 100 个连续字节 但是 对于定义为的列varchar 100 情况可能并非如此 因为整个要点varchar是不分配比存储列中实际数据值所
  • WPF 从 ViewModel 打开一个新视图

    这是我的第一次WPF MVVM应用程序 这是我的结构 与我的一个项目app xaml打开应用程序并覆盖OnStartup来解析主窗口 我这样做是因为参考文献 我的观点的一个项目 我的 ViewModel 的一个项目 我的模特的一个项目 我有
  • 我不知道Python中的__iter__,谁能给我一个好的代码示例

    我的代码运行错误 class a object def iter self return 33 b a aaa b bbb c a print b itervalues print c itervalues 请尝试使用代码 而不是文本 因为
  • JavaScript 在 JSON 对象内搜索

    我的应用程序中有一个 JSON 字符串 对象 list name my Name id 12 type car owner name my Name2 id 13 type car owner2 name my Name4 id 14 ty
  • 将 PFQueryTableViewController (来自解析)与 Swift 结合使用

    我已将 UITableViewController 添加到故事板 并创建 分配一个从 PFQueryTableViewController 继承到故事板控制器的新类 然后我编写了以下初始化函数 但我无法使表视图控制器正常工作 为了实例化 P
  • 尝试使用 Discord.py 重写将消息发送到特定频道,但它不起作用

    我目前正在开发一个不和谐的机器人 我尝试在用户升级后使用 Discord py 重写将消息发送到特定频道 但我收到此错误 await channel message send f message author mention is now
  • 为什么构造函数中带有可选参数的类不能满足 new() 泛型约束?

    以下代码无法编译 产生 Widget 必须是具有公共无参数构造函数的非抽象类型 错误 我认为编译器拥有它需要的所有信息 这是一个错误吗 疏忽 或者是否存在某些情况下这无效 public class Factory
  • 如何连接 Wordpress 登录系统以编程方式阻止某些用户?

    我正在开发一个基于 WordPress 的门户网站 该门户网站与定制的电子商务集成 电子商务还充当 控制面板 所有角色都在那里设置 一些用户被记录但 不活跃 他们不应该能够登录 WordPress 出于这个原因 我需要连接到 Wordpre
  • 套接字心跳与保活

    为套接字实现自己的心跳和设置 keepalive 有何优缺点 我在某处读到 保活有时可能会失败 连接无论如何都会关闭 取决于网络结构 另一件事是 自己的心跳可以检测应用程序是否响应 不仅仅是套接字 我的主要目标是确保所有这些 即使没有发送数
  • 如何在 Android 中解压 7zip 存档?

    我有一个7zip包含数百个文件的存档 这些文件被分成不同的目录 目标是从 FTP 服务器下载它 然后将其解压到手机上 我的问题是7zipSDK包含的内容并不多 我正在寻找有关 7z 文件解压的示例 教程和片段 解压通过Intent只是次要选
  • npm 命令中 - 和 -- (单破折号和双破折号)之间的区别

    我想知道这个问题是否已经得到解决 我用过一些这样的命令 npm install g npm install d 然后我用了一些类似的 npm install XYZ save dev npm install only dev 之间的根本区别
  • 发现对集合 org.hibernate.HibernateException 的共享引用

    我收到此错误消息 错误 找到对集合的共享引用 Person latedPersons 当我尝试执行时addToRelatedPersons anotherPerson person addToRelatedPersons anotherPe
  • 我可以在没有 GUI 的情况下使用 OS X 10.8 的语音识别/听写功能吗?

    理想情况下 我想使用 Python 的 10 8 Mountain Lion 听写功能 而不需要 GUI 据我所知 目前仅支持听写UITextInput协议 这意味着 GUI 正确吗 您可以创建一个虚拟文本字段 并通过模拟按键以编程方式开始
  • 更改 Hadoop 中现有文件的块大小

    考虑一个 hadoop 集群 其中默认块大小为 64MBhdfs site xml 然而 后来团队决定将其更改为 128MB 这是我对上述场景的疑问 此更改是否需要重新启动集群 或者它会自动占用并且所有新文件将具有 128MB 的默认块大小
  • C/C++ 条件返回语句[重复]

    这个问题在这里已经有答案了 我正在研究嵌入式程序 在某些情况下 如果没有条件 我想尽快从函数返回 如果我有以下代码并且我正在进行嵌入式编程 foo if a lt b return 0 bail since condition is met