C#与C++(结构体内对象指定大小)
C++结构体:
struct DATAAREA { // 报警协议数据区结构
char szAlarmNo[20]; // 报警编号(必填)
char szUserNo[10]; // 用户编号(必填)
char szUserName[100]; // 用户名称(必填)
char szUserAddr[100]; // 用户地址(必填)
char szUserType[10]; // 用户类型
char szPrincipal[20]; // 负责人(必填)
char szPrincipalPhone[18]; // 负责人电话(必填)
char szPrincipalFamilyPhone[18]; // 负责人宅机(必填)
char szPrincipalMobilePhone[18]; // 负责人手机
char szPrincipalCall[18]; // 负责人呼机
char szIntersectRoad[100]; // 交叉路(交叉路如果是两条路,则在两条路之间加上分隔符‘@’,如:枫林路@小木桥路)
char szPoliceSubstation[100]; // 派出所名称
char szPoliceSubStationPhone[18]; // 派出所电话
char szFstLinkman[20]; // 第一安保联系人
char szFstLinkmanPhone[18]; // 第一安保联系人手机
char szFstLinkmanCall[18]; // 第一安保联系人呼机
char szAlarmTime[20]; // 报警时间(YYYY-MM-DD hh:mm:ss)
char szDefAreaType[10]; // 防区类型
char szDefAreaNo[10]; // 防区编号
char szDefAreaInfo[100]; // 防区名称与位置
char szAlarmRevID[10]; // 接警员工号
char szAlarmRevName[20]; // 接警员姓名
char szAlarmDutyRoomPhone[18]; // 报警点值班室电话
} dataArea;
对应C#结构体:
/// <summary>
/// 报警协议数据区结构
/// </summary>
public struct DataAreaForAlarmAsk
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] szAlarmNo;// 报警编号(必填)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public char[] szUserNo;// 用户编号(必填)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
public char[] szUserName;// 用户名称(必填)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
public char[] szUserAddr; // 用户地址(必填)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public char[] szUserType; // 用户类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] szPrincipal; // 负责人(必填)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
public char[] szPrincipalPhone; // 负责人电话(必填)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
public char[] szPrincipalFamilyPhone; // 负责人宅机(必填)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
public char[] szPrincipalMobilePhone; // 负责人手机
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
public char[] szPrincipalCall ; // 负责人呼机
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
public char[] szIntersectRoad; // 交叉路(交叉路如果是两条路,则在两条路之间加上分隔符‘@’,如:枫林路@小木桥路)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
public char[] szPoliceSubstation; // 派出所名称
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
public char[] szPoliceSubStationPhone; // 派出所电话
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] szFstLinkman; // 第一安保联系人
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
public char[] szFstLinkmanPhone; // 第一安保联系人手机
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
public char[] szFstLinkmanCall; // 第一安保联系人呼机
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] szAlarmTime ; // 报警时间(YYYY-MM-DD hh:mm:ss)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public char[] szDefAreaType ; // 防区类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public char[] szDefAreaNo ; // 防区编号
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
public char[] szDefAreaInfo ; // 防区名称与位置
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public char[] szAlarmRevID ; // 接警员工号
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] szAlarmRevName ; // 接警员姓名
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
public char[] szAlarmDutyRoomPhone ; // 报警点值班室电话
}
C#与C++(结构体内对象指定大小)的更多相关文章
- struct结构体内存大小
一. 基本原则 1. struct中成员变量的声明顺序,与成员变量对应的内存顺序是一致的: 2. struct本身的起始存储地址必须是成员变量中最长的数据类型的整倍数,注意是最长的数据类型,而不是最长 ...
- 【APUE】Chapter17 Advanced IPC & sign extension & 结构体内存对齐
17.1 Introduction 这一章主要讲了UNIX Domain Sockets这样的进程间通讯方式,并列举了具体的几个例子. 17.2 UNIX Domain Sockets 这是一种特殊s ...
- Ehcache计算Java对象内存大小
在EHCache中,可以设置maxBytesLocalHeap.maxBytesLocalOffHeap.maxBytesLocalDisk值,以控制Cache占用的内存.磁盘的大小(注:这里Off ...
- 计算Java对象内存大小
摘要 本文以如何计算Java对象占用内存大小为切入点,在讨论计算Java对象占用堆内存大小的方法的基础上,详细讨论了Java对象头格式并结合JDK源码对对象头中的协议字段做了介绍,涉及内存模型.锁原理 ...
- [C/C++] 结构体内存对齐用法
一.为什么要内存对齐 经过内存对齐之后,CPU的内存访问速度大大提升; 内存空间按照byte划分,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内 ...
- jvm内存结构及对象漫谈(较全)
最近想整理一下GC相关的知识和经验,在整理之前先整理一下jvm的内存结构,后续会持续更新. jvm内存结构重要由两部分组成:线程共享区域与线程私有区域,如下图所示: 其中方法区和堆为线程共享区域,栈与 ...
- [C/C++] 结构体内存对齐:alignas alignof pack
简述: alignas(x):指定结构体内某个成员的对齐字节数,指定的对齐字节数不能小于它原本的字节数,且为2^n; #pragma pack(x):指定结构体的对齐方式,只能缩小结构体的对齐数,且为 ...
- 如何精确地测量java对象的大小-底层instrument API
转载: 如何精确地测量java对象的大小-底层instrument API 关于java对象的大小测量,网上有很多例子,大多数是申请一个对象后开始做GC,后对比前后的大小,不过这样,虽然说这样测量对象 ...
- 浅谈C/C++结构体内存分配问题
.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertica ...
随机推荐
- PHP漏洞全解(详细介绍)
转载 http://www.jb51.net/article/31898.htm 针对PHP的网站主要存在下面几种攻击方式: 1.命令注入(Command Injection) 2.eval注入(E ...
- 0421 实验二Step2-FCFS调度
一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行, ...
- js 实现精确加减乘除
//加法 function accAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split(".")[1] ...
- 响应式框架pure--来自雅虎
梦想还是要有 http://www.purecss.org/
- 经典SQL
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- 使用 TC 对LInux中vpn 上传下载进行限速(转)
TC 无需安装,Linux 内核自带 例:将vpn IP地址段192.168.1.0/24 上传下载限速为 5M 将以下内容添加到/etc/ppp/ip-up文件exit 0上面. down=5Mbi ...
- linux设备驱动归纳总结(八):1.总线、设备和驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-109733.html linux设备驱动归纳总结(八):1.总线.设备和驱动 xxxxxxxxxxxx ...
- iOS 学习笔记 十三 (2015.04.15)采用第三方库,实现ios录音转为amr
1.第三方开源库地址 https://github.com/guange2015/ios-amr 2.参考博客地址 http://blog.csdn.net/windsoul85/article/de ...
- org.hibernate.PropertyNotFoundException:could not find a getter for name in class ....
Hibernate创建持久化类须符合JavaBean的规范,"get","set"后面紧跟属性的名字,并且属性名的首字母为大写.如果不遵守这个规则,Hibern ...
- 很好用的查看音频波形的软件cool edit pro