C语言
pjc虽云乐
嵌入式、无人驾驶、无人机、路径规划学习者
展开
-
offsetof宏定义分析
//TYPE是结构体类型, MEMBER是结构体中的一个元素的元素名#define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER)拆分为以下三个个步骤:1、(TYPE *)0(将TYPE类型结构体变量的首地址变为0)个人理解将其跟数组比较(不一定正确),把0地址强制类型转换成一个指针,这个指原创 2017-12-13 09:37:41 · 301 阅读 · 0 评论 -
contatiner_of宏
这个宏返回的就是指向整个结构体变量的指针,类型是(type*)用结构体某个元素的地址得到这个结构体的首地址ptr是指向结构体元素member的指针,type是结构体类型,member是结构体中一个元素的元素名#define container_of(ptr, type, member) ({ \const typeof(((type *)0)->me原创 2017-12-14 12:19:40 · 253 阅读 · 0 评论 -
条件编译
这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部 分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段...转载 2018-06-15 22:00:18 · 124 阅读 · 0 评论