嵌入式开发知识点总结

offsetof和container_of宏

offsetof宏的作用:计算结构体中某个元素相对结构体首地址的偏移量

container_of宏的作用:知道结构体变量中某个成员的指针,反推这个结构体变量的指针

#include <stdio.h>
#define offsetof(type,member) ((int) &((type *)0)->member)
#define container_of(ptr,type,member) ({    const typeof(((type *)0)->member) *mptr = (ptr);    (type *)((char *)mptr - offsetof(type,member));})
//typeof关键字的作用:typeof(a)由变量a获得变量a的类型
typedef struct node{
    int a;
    double b;
    float c;
} n1;
int main()
{
    n1 s;
    float *p = &(s.c);
    printf("offsetof(c) = %d\n",offsetof(n1,c));
    printf("addr of s is %p\n",&s);
    printf("container_of(p,n1,c) = %p\n",container_of(p,n1,c));
    return 0;

}

sizeof(short) = 2
sizeof(int) = 4
sizeof(long) = 4

--------------------------------
Process exited after 0.1803 seconds with return value 0
请按任意键继续. . .

运行结果

原文地址:https://www.cnblogs.com/embeded-linux/p/11616418.html

时间: 2024-10-12 03:59:33

嵌入式开发知识点总结的相关文章

嵌入式开发板丨ARM开发板 学习必备资料- 迅为电子

摘要: ARM开发板 迅为三星Exynos嵌入式开发平台超强GPS模块 iTOP-Exynos4412开发板采用 Exynos4412的主芯片,具有更高的主频和更丰富外设,配置 2GB 双通道 DDR3的内存及 16GB 存储,具有稳定性强.可靠性高,能适用于对性能和处理能力有更高要求的嵌入式系统应用场合. iTOP-Exynos4412开发板内置有无线 WIFI 模块.Bluetooth.GPS.Camera.3G等模组,支持 HDMI1.4(1080P/60Hz)显示,客户可以直接从开发平台

基于软件开发对嵌入式开发的思考

由于本人专业方向是计算机体系结构方向的,平时做嵌入式方面的实验以及项目较多,这个学期又学习了软件工程的课程,因此想借此机会,总结下在软件工程上面学习到的知识,并看看是否有什么能够借鉴到嵌入式方向的开发上面去. 首先我想总结下,软件开发与嵌入式开发的不同之处.作为软件开发,首先应当从用户或者用户的需求入手,明白用户想让你去实现什么功能,而到了具体的实现,有时却限制的不是那么的死.而至于嵌入式的开发,从需求入手是相同的,但是对于实现的方式,却明显不同于传统的软件开发.对于编程语言,不同的嵌入式开发平

第二章 Android系统与嵌入式开发

第二章 Android系统与嵌入式开发 第二章首先要先了解Android和嵌入式Lnux系统有什么区别和联系,嵌入式Linux系统是在嵌入式设备中运行Linux系统:Android系统是在嵌入式设备中运行Android系统. 其区别就是Android系统和Linux系统的区别.Android系统的底层是Linux的内核,上面跑的是Android的java虚拟机.Android系统的UI做的比Lnux好很多. 首先我们应该先了解一下什么是嵌入式,对于嵌入式来说,它是一种“完全嵌入受控器件内部,为特

与一线Linux嵌入式开发project师的对话

转:与一线Linux嵌入式开发project师的对话 陈project师一直做Linux的嵌入式开发.作为在开发一线的project师.他对非常多问题的看法可能更切合实际需求,于是,通过邮件.就嵌入式开发方面的问题,请他谈了一下自己的看法: 问:关于嵌入式开发.我们准备给同学们解说一些入门知识.从你一线开发经验来说,给我们一些建议: 陈工回答: 对于嵌入式Linux入门,假设有一定基础,可以从驱动開始:假设没有基础.我个人建议还是从应用程序開始.由于从应用程序開始是最easy的,也是 最直观的.

转:Qt 嵌入式开发环境搭建

地址: http://www.cnblogs.com/lishixian/articles/3013897.html         作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅读的一些有价值的参考文档,文档主要来自于网络,由于是从文库中下载,所以也不知道 文档的出在哪?因为个人觉得总结的比较好,我暂且拿过来记录下,当然在此基础上也会加上我自己的理解!这篇文章主要是以问答的形式来组织. QT嵌入式开发环境是本文所要介绍的内容,我们先看看Qt的各个版本简介: 1.什么是QT

嵌入式开发技术三级

1.酒店客房的门锁系统是由总台服务器和若干客房指纹锁组成,其基本功能具体描述如下: a.客房的指纹锁与总台服务器之间通过通信网络连接. b.旅客在总台登记住宿时,录入其指纹信息,并提取其特征值存储在总台服务器中.同时录入一个密码(若干位数字组成),以备指纹无法开锁时,用密码开锁. c.旅客在开客房指纹锁时,把相应手指放在门锁的指纹采集部件上,采集相应的指纹图像信息,并传输给总台服务器. d.总台服务器接收到某个客房指纹锁传输来的指纹图像信息后,进行特征值求取并进行匹配,若匹配正确,则回送开锁指令

(转)嵌入式开发如何学习

一般来说,在嵌入式行业中从事嵌入式产品研发的人往往来自这样一些专业:计算机.电气,自动化,微电子,电子信息,通信,机械等相关专业,由于大学里面不同专业基础课的设置,所以在准备学习的过程中需要根据实际情况有不同的侧重. 一是程序设计的基础,例如:基本的编程语言基础,至少对数据类型.程序的结构及流程控制等最基本的内容要相当清楚,所以建议恶补一下C语言,呵呵!另外有不少同学都问到数据结构的基础,我一直认为数据结构和算法的学习是帮助形成程序设计逻辑思维的很好训练方式,对于程序员的长期专业素养的提高一定有

&nbsp; &nbsp; JAVA SCRIPT SLIDESHOW 嵌入式开发的 VOID 运行链接开发

运行程序正在开始 简单地说,从不同的创建中来通过运行代码的原始去进行识别,应用代码编写如下: 嵌入式输入一段代码: 这段代码是从线路视频中去探访:<div id="anvsoftJavaScriptSlideshow" style="width: 650px; height: 370px; position: relative;"> <script src="anvsoftJavaScriptSlideshow-1.0.0.min.js?

用vs2013+velt-0.1.4进行嵌入式开发:插件安装

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs2013 + velt-0.1.4 1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序