代码改变世界

c语言中结构体位段

2013-08-08 13:53 by 居安, 915 阅读, 0 推荐, 收藏, 编辑
摘要:结构体中允许存在位段、无名字段以及字对齐所需的填充字段。这些都是通过在字段的声明后面加一个冒号以及一个表示字段位长的整数来实现。这些冒号后的整数规定了成员所占的位数。举例如下: typedef struct def {char a : 4;char b : 4; }Def;void sizetest(){int size ;char test;Def Mdata;Mdata.a=0xf0;//会截断,只取到前四位Mdata.b=0x0f;//截断,取前四位memcpy(&test , &Mdata , 1);size = sizeof(Mdata);//大小为一个字节print 阅读全文

结构体位断

2013-08-05 17:20 by 居安, 247 阅读, 0 推荐, 收藏, 编辑
摘要:结构体中允许存在位段、无名字段以及字对齐所需的填充字段。这些都是通过在字段的声明后面加一个冒号以及一个表示字段位长的整数来实现。这些冒号后的整数规定了成员所占的位数。举例如下: typedef struct def {char a : 4;char b : 4; }Def;void sizetest(){int size ;char test;Def Mdata;Mdata.a=0xf0;//会截断,只取到前四位Mdata.b=0x0f;//截断,取前四位memcpy(&test , &Mdata , 1);size = sizeof(Mdata);//大小为一个字节print 阅读全文

malloc/free与 new/delete的区别

2013-08-05 10:02 by 居安, 209 阅读, 0 推荐, 收藏, 编辑
摘要:相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。(2)用法上也有所不同。函数malloc 的原型如下:void * malloc(size_t size);用malloc 申请一块长度为length 阅读全文

cortex_M3嵌套向量中断控制器NVIC

2013-08-02 22:16 by 居安, 2062 阅读, 0 推荐, 收藏, 编辑
摘要:CortexM3处理器中,NVIC的存在不仅方便了低延时异常和中断的处理,而且还实现了电源管理和系统的寄存器。NVIC 支持240 个优先级可动态配置的中断,每个中断的优先级有256 个选择。低延迟的中断处理可以通过紧耦合的NVIC 和处理器内核接口来实现,让新进的中断可以得到有效的处理。NVI 通过时刻关注压栈(嵌套)中断来实现中断的末尾连锁(tail-chaining)。用户只能在特权模式下完全访问 NVIC,但是如果使能了配置控制寄存器,就可以在用户模式下挂起(pend)中断。其他用户模式的访问会导致总线故障。一般情况下,NVIC的所有寄存器都可采用字节,半字和字方式进行访问。不管处理器 阅读全文

rt-thread:cannot open source input file "sys/types.h":解决方法

2013-08-02 13:50 by 居安, 2036 阅读, 0 推荐, 收藏, 编辑
摘要:..\..\components\pthreads\posix_types.h(9): error: #5: cannot open source input file "sys/types.h": No such file or directory解决办法:找到rtconfig.h,在其中找到宏定义RT_USING_NEWLIB,把它注释掉,重新编译,搞定。 阅读全文

《地下铁》

2013-08-01 10:58 by 居安, 179 阅读, 0 推荐, 收藏, 编辑
摘要:想听萧亚轩的《地下铁》 阅读全文

提前15分钟到

2013-07-23 08:54 by 居安, 166 阅读, 0 推荐, 收藏, 编辑
摘要:今天8点45到公司,比往常早了10多分钟。我们小组居然没有一个人到。倒是坐在我对面的两个---骆哥和曾哥已经在商量着工作的事情了。心里不禁有点佩服。这里的人看起来好像有点水,其实想想,能够在这里待着心里多少还是有点货的。不知不觉心里添几分惭愧。 阅读全文

今天使用pirntf()函数的一点启发

2013-07-09 14:03 by 居安, 360 阅读, 0 推荐, 收藏, 编辑
摘要:今天在使用printf函数打印一个整形计数器变量时,总是发现计数器的增值顺序不对...刚开始没注意,后来仔细一想,原来是有原因的。代码主要部分如下: static int count=0; printf("%d:\n,%d:\n",++count,++count); 结果总是向如下: 2: 1: 即下一行的行号比上一行的行号小,这就是说printf()中先计执行了第二个个++count,再执行第一个++count,这个原因我估计是因为c语言中函数调用参数入栈顺序从右到左有关。 阅读全文