飞鱼的成长

 

因本人不再做技术,

这个blog将不再连载技术文章,

只作为心情点滴的记录,

想学技术的请绕道,谢谢!

联系方式:

feiyu_lili@163.com


时 间 记 忆
«October 2020»
123
45678910
11121314151617
18192021222324
25262728293031

最 新 评 论
回复:什么都是错,唯有行动才是真道理
回复:我有个梦想
回复:自动词和他动词的分类比较[转][小
回复:Binaryluo 的  [网络编
回复:如何实现人生价值(转)
回复:工作有感
回复:如何实现人生价值(转)
回复:如何实现人生价值(转)
回复:如何实现人生价值(转)
回复:我有个梦想

最 新 日 志
我有个梦想
工作有感
我的人生路该怎么走
什么都是错,唯有行动才是真道理
想家的孩子
解压的方法(转)
关于我的一些调节心态的方法(转)
具体应该怎样同懒惰性做斗争?(转)
如何实现人生价值(转)
希望这里的房子能早点租掉

最 新 留 言
签写新留言

日语自动,他动
化妆了 :)
步伐当然记得你啦(不能回复,只能另起炉灶
好久不见了。。。
睡觉的问题
………………
~~~~~
。。。。
还以为你去日本了来
那里去了???

搜 索


用 户 登 录
用户名称:
登陆密码:
密码保存:

友 情 连 接

凡弟のBlog

祺弟のBlog

臭釉のBlog

 

blog名称:飞鱼的成长
日志总数:120
评论数量:488
留言数量:18
访问次数:1007372
建立时间:2006年2月27日
 
 
 
[嵌入式相关]关键字volatile有什么含意?并给出三个不同的例子。(转编)
[ 2006/11/21 10:54:09 | By: feiyu_lili ]
 
关键字volatile有什么含意?并给出三个不同的例子。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3) 多线程应用中被几个任务共享的变量回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难。假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。1)一个参数既可以是const还可以是volatile吗?解释为什么。2); 一个指针可以是volatile 吗?解释为什么。3); 下面的函数有什么错误:int square(volatile int *ptr){        return *ptr * *ptr;}下面是答案:1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。2); 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。3) 这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:int square(volatile int *ptr) {    int a,b;    a = *ptr;    b = *ptr;    return a * b;}由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:long square(volatile int *ptr) {    int a;    a = *ptr;    return a * a;}原出处http://www.c51bbs.com/c51bbs/topic/c51bbs762697.htm 嵌入式相关网址http://xiaozhe2000.bokee.com/2349418.html      
 

阅读全文(3405) | 回复(0) | 编辑 | 精华
 

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144496673 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号