C/C++软件工程师就业求职手册学习笔记---第七章
2014-04-03 14:29
246 查看
第七章 位运算与嵌入式编程
移位操作,置位,清零操作等统计1出现的次数,可参照下面文章。 http://blog.csdn.net/fengzhizizhizizhizi/article/details/21404383 例子1:
列举并解释C++中四种运算符转化,说明他们的不同点
1、const_cast 操作符:即可以在特殊情况下,解除const成员函数的限制。
2、dynamic_cast操作符:用于判断运行时所指向对象的确切类型,可以将一个姐累的指针指向不同的子类(派生类),然后将被转型作为基础类的对象还原成原来的类,不过仅限于对象指针的类型转换。
3、reinterpret_cast操作符:将一个指针转换成其他类型的指针,可以是毫不相干,void* 到char *,int* 到float *。
4、static_cast操作符:在相关的对象和指针类型之间转换。有关类必须是通过继承构造函数或者是转换函数联系的,他能将数域较大的类型转换为较小类型。
/****************************理解不深,后面补上******************************/
例子2:如何访问特定位置内存。
int*ptr; ptr=(int*)0x6719; *ptr=0xaa55;
也可以:
*(int*)0x6719=0xaa55;
例子3:
__interruptdouble compute_area(double radius) { double area=PI*radius*radius; printf("area =%f",area); return area; }
第一,不能有返回值;
第二,不能传递参数;
第三,很多编译器或处理器,浮点数是不可重入的,有些处理器或编译器需要使用额外的存储器入栈,有些编译器或处理器不允许在ISR中做浮点运算。此外,ISR应该是短而且有效率的,在ISR中做浮点数不好。
第四,printf()经常出现重复和性能上的问题。
volatile型变量,用时会重新读取该变量,而不是保存在寄存器中的备份。使用场景:
1、并行设备的硬件寄存器(如状态寄存器);
2、一个中断子程序中会访问到的非自动变量;
3、多线程应用中被几个任务共享的变量。
判断big endian littleendian
int checkCPU() { union w { int a; char b; }c; c.a=1; return(c.b==1); }
相关文章推荐
- KnockoutJS 3.X API 第七章 其他技术(1) 加载和保存JSON数据
- HTML第七章上机题3---------北大青鸟视频宣传
- 第七章上机练习2
- Python编程入门-第七章 数据结构 -学习笔记
- Kali Linux 网络扫描秘籍 第七章 Web 应用扫描(二)
- 刘启成_第七章实验(三):while
- 深入浅出ExtJS 第七章 弹出窗口
- 半导体器件 第七章 PPT
- 第七章-定时器
- 第七章 consul docker集群
- Box2D v2.3.0 用户指南(第七章)
- 第七章 输入输出系统之显示器和TTY
- <<UNIX环境高级编程>>之第七章理解
- 《谈判力》读书笔记:第七章 如果对方不合作怎么办?(谈判柔术)
- C++Primer第五版 第七章习题答案(31~40)
- SQL高级 第七章 存储过程
- java中第七章面向对象的笔记
- ACCP7.0s2深入.net和c#第七章上机123
- Vulkan编程指南翻译 第七章 图形管线 第1节 逻辑图形管线
- Vulkan编程指南翻译 第七章 图形管线 第4节 创建简单的图形管线(下)