C++/C#跨语言编程知识点_用栈减小结构体大小和0计算偏移量_class2

cpp 复制代码
#include <iostream>
#define FIELDOFFSET(TYPE, MEMBER) (int)(&(((TYPE*)0)->MEMBER))
//0可以转换为任意类型的结构体或空对象

#pragma pack(push)
#pragma pack(1)
struct Info
{


	char username[10];//24-34 
	double userdata;//40-48
};
#pragma pack(pop)//会变成18
struct Frame
{
	unsigned char id;//0-1
	int width;//4-8
	long long height;//8-16
	unsigned char* data;//16-20
	Info info;//24-48
};
int main()
{
	int len2 = sizeof(Info);//子结构体改变
	int len = sizeof(Frame);//母结构体不改变
	int offset_w = FIELDOFFSET(Frame, width);
	int offset_h = FIELDOFFSET(Frame, height);
	int offset_d = FIELDOFFSET(Frame, data);
	int offset_i = FIELDOFFSET(Frame, info);
	/*len = sizeof(Info);*/
	
	return 0;
}

1.定义0计算偏移量

cpp 复制代码
#define FIELDOFFSET(TYPE, MEMBER) (int)(&(((TYPE*)0)->MEMBER))
int offset_w = FIELDOFFSET(Frame, width);

2.结构体入栈出栈

#pragma pack(push)

#pragma pack(1)

struct Info

{

char username[10];//24-34

double userdata;//40-48

..........

};

#pragma pack(pop)//会变成18

相关推荐
TracyCoder123几秒前
LeetCode Hot100(70/100)—— 322. 零钱兑换
算法·leetcode·职场和发展
曾阿伦1 分钟前
Python项目管理从Poetry迁移到uv:极速体验与实操指南
开发语言·python·uv
2401_891482174 分钟前
C++中的观察者模式
开发语言·c++·算法
沐雲小哥6 分钟前
bevfomer算法嵌入的tricks
数码相机·算法
wangzy19826 分钟前
一个高效稳定的多边形三角化算法(支持自交和孤岛检测)
算法·图形渲染
添砖java‘’7 分钟前
序列与反序列化
服务器·网络·c++·序列化·反序列化
保持低旋律节奏8 分钟前
第三讲一元函数微分学的概念
算法
CrystalShaw8 分钟前
[AI codec]opus-1.6\dnn包含算法汇总和文件功能分类
人工智能·算法·dnn
南滑散修13 分钟前
机器学习(三):SVM支持向量机算法
算法·机器学习·支持向量机
AnalogElectronic14 分钟前
windows文件加解密工具,python实现,速度极快,篡改文件头尾信息以及还原
开发语言·windows·python