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 ...
随机推荐
- jvm笔记
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 1. 各个参数的含义什么? 参数中-vmargs的意思是设置JVM参数, ...
- Linux下用SCP无需输入密码传输文件
在Linux环境下,两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认. 不过通过建立信任关系,可以实现不输入密码. 这里假设A的IP ...
- session与cookie的讲解
session_start();//开启session http,无状态性 记录状态SESSION COOKIE SESSION :存储在服务端(器)的:每个人存一份:可以存储任意类型的数据:默认过期 ...
- 「linux」win+linux 双系统 默认启动项 的修改
修改/etc/default/grub文件,其中的GRUB_DEFAULT表示默认启动项: sudo gedit /etc/default/grub 注意:启动项是从0开始计数. 要使修改生效需要运行 ...
- mysql单表查询&&多表查询(职员表14+9)
dept(deptno,dname,loc) emp(empno,ename,job,mgr,hiredate,sal,COMM,deptno) salgrade(grade,losal,hisal) ...
- 获取url中的参数\+发送ajax请求根路径|+获取复选框的值
//获取url中的参数function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=( ...
- linux设备驱动归纳总结(三):5.阻塞型IO实现【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-60025.html linux设备驱动归纳总结(三):5.阻塞型IO实现 xxxxxxxxxxxxxx ...
- 两个升序链表的合并 Merge Two Sorted Lists 【 leetcode】
class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *p; ListN ...
- win8以上版本离线安装.NET
方法一.C盘自带.NET 3.5,安装系统以后直接安装.NET 3.5. 1.按下:win+x,点击“命令提示符(管理员), 2.输入或复制以下代码(不可漏空格):dism.exe / ...
- Hibernate,Session方法使得java对象进入持久化状态;持久化对象特征
以下情况java对象进入持久化状态: session.save()方法把临时对象转变为持久化对象. session.load()和session.get()方法得到的对象总是处于持久化状态. sess ...