模拟实现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;
}
相关推荐
(╹◡╹)1 小时前
18.剪枝
算法·机器学习·剪枝
Fa_Mian_Tuan2 小时前
图论基础|邻接矩阵超详细讲解(含无向/有向/带权图+完整可运行C语言代码)
c语言·数据结构·笔记·算法·图论
hanhahai3 小时前
指针与函数(函数指针与指针函数)
算法
ValhallaCoder3 小时前
Leetcode-hot100(2026.08.17)
python·算法·leetcode
泡沫冰@3 小时前
GO 语言基础
开发语言·算法·golang
bkspiderx4 小时前
从零开始:VS Code搭建C/C++开发环境全指南(Windows/macOS/Linux)
c语言·c++·windows·vs code·c/c++开发环境
wuyk5554 小时前
第 6 章 FOC 完整系统整合:从算法到真机跑起来
c语言·开发语言·stm32·单片机·嵌入式硬件
luj_17684 小时前
元设计的诱惑与现实
c语言·开发语言·c++·经验分享·算法
小星星闪亮登场4 小时前
ST表--倍增思想
开发语言·数据结构·c++·算法·思维
AC赳赳老秦4 小时前
OpenClaw 多源采集公开行业数据:从原始信息到研究报告初稿的自动化实践
java·c语言·c++·python·php·deepseek·openclaw