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 ...
随机推荐
- android studio adb
bogon:platform-tools alamps$ echo $HOME /Users/alamps bogon:platform-tools alamps$ echo $PATH /usr/l ...
- demo03linearlayoutdemo;
package com.example.demo03linearlayoutdemo; import android.os.Bundle; import android.app.Activity; i ...
- struts2中Double类型的转换
今天做项目,ssh + Extjs,页面js中定义了几个NumberField,对应的value都是double类型的,其中有个NumberField的name为 name,结果执行的时候报错了,说找 ...
- linux强制umount设备的方法
假如挂载时使用了:mount /dev/sda1 /mnt/sda1 #查找占用设备的pid fuser -m /mnt/sda1 #假如此时得到的pid为12345 kill -9 12345 um ...
- 《zw版·Halcon-delphi系列原创教程》 水果自动分类脚本(机器学习、人工智能)
<zw版·Halcon-delphi系列原创教程> 水果自动分类脚本(机器学习.人工智能) 前面介绍了超市,流水线,酸奶的自动分类算法,下面再介绍一个水果的自动分类算法. Halcon强大 ...
- where 子句和having子句中的区别
1.where 不能放在GROUP BY 后面 2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE 3.WHERE 后面的条件中不能有聚集函数 ...
- 基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现
概述 在日常开发中, 我们经常谈起模块化/插件化架构,这样可既可以提高开效率,又可以实现良好的扩展性,尤其对于产品化的系统有更好的实用性. 架构 我们采用的是MVC5(本文中介绍的方法对于MVC4也是 ...
- CSS的样式合并与模块化
by zhangxinxu from http://www.zhangxinxu.com 原文地址:http://www.zhangxinxu.com/wordpress/?p=931 一.引言 本文 ...
- 【python cookbook】【数据结构与算法】16.筛选序列中的元素
问题:提取出序列中的值或者根据某些标准对序列做删减 解决方案:列表推导式.生成器表达式.使用内建的filter()函数 1.列表推导式方法:存在一个潜在的缺点,如果输入数据非常大可能会产生一个庞大的结 ...
- scala伴生对象
package com.test.scala.test /** * 伴生对象指的是在类中建立一个object */ class AssociatedObject { private var count ...