专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>c语言教程>

C语言修炼之软件架构篇(单任务)

百度收藏 QQ搜藏

 单任务程序典型架构

  (1)从CPU复位时的指定地址开始执行;

  (2)跳转至汇编代码startup处执行;

  (3)跳转至用户主程序main执行,在main中完成:

  a.初试化各硬件设备;

  b.初始化各软件模块;

  c.进入死循环(无限循环),调用各模块的处理函数

  用户主程序和各模块的处理函数都以C语言完成。用户主程序最后都进入了一个死循环,其首选方案是:

while(1)
{
}

  有的程序员这样写:

for(;;)
{
}

  这个语法没有确切表达代码的含义,我们从for(;;)看不出什么,只有弄明白for(;;)在C语言中意味着无条件循环才明白其意。

  下面是几个"著名"的死循环:

  (1)操作系统是死循环;

  (2)WIN32程序是死循环;

  (3)嵌入式系统软件是死循环;

  (4)多线程程序的线程处理函数是死循环。

  你可能会辩驳,大声说:"凡事都不是绝对的,2、3、4都可以不是死循环"。Yes,you are right,但是你得不到鲜花和掌声。实际上,这是一个没有太大意义的牛角尖,因为这个世界从来不需要一个处理完几个消息就喊着要OS杀死它的WIN32程序,不需要一个刚开始RUN就自行了断的嵌入式系统,不需要莫名其妙启动一个做一点事就干掉自己的线程。有时候,过于严谨制造的不是便利而是麻烦。君不见,五层的TCP/IP协议栈超越严谨的ISO/OSI七层协议栈大行其道成为事实上的标准?

  经常有网友讨论:

printf("%d,%d",++i,i++); /* 输出是什么?*/
c = a+++b; /* c=? */

  等类似问题。面对这些问题,我们只能发出由衷的感慨:世界上还有很多有意义的事情等着我们去消化摄入的食物。

  实际上,嵌入式系统要运行到世界末日。

上一篇:C语言修炼之软件架构篇(多任务还是单任务) 下一篇:C语言修炼之软件架构篇(中断)

power by soyo123 2007-2008