模拟实现offsrtof

写一个宏,计算结构体中某变量对于首地址的偏移

设计思路:

1.偏移量,用每个所求元素的地址减去结构体初始值的地址可得

2.如计算图示,第一个元素的偏移量=结构体初始值必为0,第二个为4,其次为6,最后为8。

(1)故可以将初始值地址设置为0,0所指向的地址的距离=变量对于首地址的偏移值

(2)将0强制转换为结构体类型名,使得初始值置0(这个方法只能在宏定义中使用,不能在函数中使用)

​​​​​​​

错误:

1.老是搞不清要传的参数是"struct"、"struct MyStruct"、"struct s"、"MyStruct s"、"s"中的哪个

2.有思路不会实现,比如强转转哪个参数不确定

cpp 复制代码
#define MY_OFFSRTOF(struct_name,member_name) (int)&(((struct_name*)0)->member_name)
typedef struct MyStruct
{
	int a;
	short b;
	char c;
	int d;
}s;
int main()
{
	printf("%d\n", MY_OFFSRTOF(s, a));
	printf("%d\n", MY_OFFSRTOF(s, b));
	printf("%d\n", MY_OFFSRTOF(s, c));
	printf("%d\n", MY_OFFSRTOF(s, d));
	return 0;
}
相关推荐
凯_kyle几秒前
Python 算法竞赛 —— 基础篇(更新ing)
笔记·python·算法
lizz318 分钟前
C++操作符重载深度解析
java·c++·算法
阿拉斯攀登13 分钟前
电子签名:笔迹特征比对核心算法详解
人工智能·算法·机器学习·电子签名·汉王
ytttr87316 分钟前
matlab进行利用遗传算法对天线阵列进行优化
开发语言·算法·matlab
一招定胜负18 分钟前
机器学习算法三:决策树
算法·决策树·机器学习
无限进步_18 分钟前
【C语言】队列(Queue)数据结构的实现与分析
c语言·开发语言·数据结构·c++·算法·链表·visual studio
李余博睿(新疆)28 分钟前
c++经典练习题-分支练习(2)
c++·算法
Dev7z30 分钟前
基于中心先验的全局对比度显著性检测算法
人工智能·算法·计算机视觉
重生之我是Java开发战士32 分钟前
【算法日记】排序算法:原理、实现、性能与应用
数据结构·算法·排序算法
superman超哥34 分钟前
仓颉语言中网络套接字封装的深度剖析与工程实践
c语言·开发语言·c++·python·仓颉