模拟实现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;
}
相关推荐
ji1985944313 小时前
局部线性嵌入(LLE)算法 MATLAB 实现
算法·机器学习·matlab
Deepoch13 小时前
Deepoc VLA开发板:无人机群体协同与无网络自主作业核心
网络·人工智能·算法·无人机·deepoc·具身模型开发板
随意起个昵称13 小时前
线性dp-计数类题目11(不等数列)
c++·算法·动态规划
Black蜡笔小新13 小时前
自动化AI算法训练服务器DLTM零代码私有化部署筑牢企业AI落地根基
人工智能·算法·自动化
wWYy.13 小时前
算法:最大子数组和
算法
吃着火锅x唱着歌13 小时前
LeetCode 3829.设计共享出行系统
算法·leetcode·职场和发展
炸薯条!13 小时前
二叉树的链式表示
数据结构·算法
CHHH_HHH13 小时前
【C++】二叉搜索树全面升级,深度剖析AVL树
开发语言·数据结构·c++·算法·stl
xgstb13 小时前
计算机编程语言
c语言·编译器·标准·计算机编程语言·历史沿革
Mumu121813 小时前
P3211 [HNOI2011] XOR和路径
算法