如何写死循环

曾经有个面试问题 , 嵌入式系统中经常要用到无限循环 , 你怎么样用C编写死循环呢?
方法一:
如何写死循环
文章图片
方法二:
如何写死循环
文章图片
方法三:
如何写死循环
文章图片
当然应该还有其他方法 , 但是我想大都数人都会用到以上三种方法 。 如果再优秀的人 , 可能会想着线程中死循环的耗时处理 , 但不管怎么样 , 如果是你 , 你第一感觉会用哪种方案呢 。
如何写死循环】我们已经习惯了信手拈来 , 不会去理解语法明确的表达 , 去探究他们这样做的基本原理 , 很多人从没想到过为什么 。
方案一没有划定初始化 , 更新区域的代码块位置 。 如果出现问题 , 需要花精力查找 , 增添了许多工作量 。 而且每次判断都要执行表达式 , 如何中断跳出死循环又是一个需要考虑的事情 。
方案二清楚划定初始化 , 判断区域 , 更新区域的代码块位置 , 后人接手程序 , 不必花精力查找 , 无形中减轻了工作量 。 中间没条件就无限循环 。 判断区里要求的是代码块 , 如果要无条件循环 , 只需置其为空 , 与while循环相比 , 节省了一次执行表达式的操作 。
方案二比方案一更具备优势 , for里为空 , 编译执行后没有判断的语句 , 而while(1)始终都会有执行判断1==true , 所以在单片机这种低速的 , 内存资源不多的环境 , 方案二是更好的选择 。
当然如果能够嵌入方案三 , 说明他是一个很棒的汇编程序员 。
但是如果在单线程中去执行这样的死循环 , 往往会带来很恶劣的影响 , 如果单纯在单片机里的话 , 我想表达的是一般在Soc里面 , 往往建议不要使用死循环 , 这样会带来很多麻烦的事 , 比如如何跳出死循环 , 或者单线程中死循环崩掉带来的影响 。
优秀的你往往不走寻常路 , 可能有的人会觉得以上三种方案有点low , 会采用定时器 , 或者一些比较高端的方式去实现死循环 , 也能够增添不少技术的色彩和迷幻 。
如何写死循环
文章图片