c - do while(0) or if else 哪一个适合单一导出点?

标签 c misra

<分区>

我想为一个函数实现单一导出点。一种方法是使用变量,并检查条件,如果条件失败,则将变量设置为错误并在函数结束时返回该变量。但是嵌套 if else 会妨碍代码的可读性。

另一种方法是将代码包含在 do {} while(0); 中并在此循环中检查条件,如果条件失败,则将错误设置在变量中并从循环中中断,然后返回错误,这提高了代码的可读性。

那么嵌套 if else 和 do while(0) 哪个更好?

最佳答案

return 语句之前(或之前某处)使用带有单个标签的 goto 语句怎么样?

   //...
   // if (...)
      goto exit_func;
   //...
   // if (...)
      goto exit_func;
   //...
   // if (...)
      goto exit_func;
   //...
exit_func:
   // do some common stuff before leaving the function (e.g.: releasing resources)
   // ...
   return;

关于c - do while(0) or if else 哪一个适合单一导出点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44064926/

相关文章:

c - 从管道作为标准输入读取时出现 "Bad file descriptor"错误

c - 规则 10.1,复杂整数表达式的隐式转换

c++ - 使用 MPI 集体通信发送结构

c++ - 有没有其他方法只在程序到达程序末尾时输出数据?

c - 我如何在 fork(), linux 中演示 COPY ON WRITE

c - 如何正确解决 C 中的 memset() 函数 MISRA 错误?

c - MISRA C 2012 是否表示不使用 bool

c - Linux 多线程 C 程序<->usleep() 以每小时为间隔进行调度的准确性

c - MISRA-C 2012 规则 10.8 查询

#include *not* 后面可以跟 <filename> 或 "filename"吗?