Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1333183
  • 博文数量: 92
  • 博客积分: 10389
  • 博客等级: 上将
  • 技术积分: 1918
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-10 16:13
文章存档

2014年(1)

2012年(15)

2009年(6)

2008年(37)

2007年(72)

2006年(54)

我的朋友

分类: C/C++

2007-12-12 15:59:56

在深入程序这么久之后,早已习惯了系统软件底蕴是那么的薄弱,可面对系统的认知深度弱点,不的不说,在编译方面的欠缺是继续深入了解系统的一个非常大的障碍。从国内编译书籍方面就知道那是多么的肤浅(特别是缺少文学修养的自认为技术高手的),即使自认为是牛比的,他也该看看世界的另外一端早已是练就了乾坤大挪移。即使你自宫,
 
虽然我的文学修养不高,但是表达上,更注重实用
 
风格:只说问题,代码注重问题的说明,而不是是否它能被成功编译
 
现象:常规程序中的变量如果被中断这样销帐的怪物给利用,需要给这个变量加上最大装饰volatile。
例子:  int t;
       init()
       {
          t=10;
 
       }
 
       timer_1second_isr()
       {
         t--;
 
       }
 
        main()
       {
         init();
         while(t)
         {
           //printf("  why printf happend here %d        \n",t);
         }
             
          printf("after one second  come here !\n"); 
       }
如果运行程序,是看不到after one second  come here 输出的,但是如果代码中的//去掉,你会发现after one second  come here 会打印在你的终端上。达不到你要的效果的。
 
而while(t)用 t的目的是当t=0的时候可以跳出循环,但是这个程序中的t的值,是放到缓存中的,就想cpu中的1级缓存类似,所以当t=0的时候,是内存中的t的值为0,而缓存中的还是不变。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
阅读(1914) | 评论(0) | 转发(0) |
0

上一篇:GCC警告选项例解

下一篇:数据结构

给主人留下些什么吧!~~