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 ...
随机推荐
- 移动widget开发
发现Oracle----php连接有很多bug无法解决,只好转向php--连接mysql数据库,并装载了mysql两个文件,跟客户端NAVICAT_FOR_MYSQL,然后直接建表,用于测试,能够连通 ...
- html5,表格
<table border="1"><caption>表格的实例</caption><tr><td>单元格</td ...
- 【python cookbook】【字符串与文本】2.在字符串的开头或结尾处做文本匹配
问题:在字符串的开头或结尾处按照指定的文本模式做检查,例如检查文件的扩展名.URL协议类型等: 解决方法:使用str.startswith()和str.endswith()方法 >>> ...
- 160919、使用AOP与注解记录Java日志
有些时候,我想要把每个运行过的方法接收到的参数.返回值和执行时间等信息记录(通过slf4j 和 log4j)下来.在AspectJ.jcabi-aspects和Java注解的帮助下我实现了这个想法. ...
- iOS 警告窗口
- (IBAction)buttonPressed:(id)sender { NSDate *date=self.datePicker.date; NSString *messag ...
- 点评js异步加载的4种方式
主要介绍了点评js异步加载的4种方式,帮助大家更全面的了解js异步加载方式,感兴趣的小伙伴们可以参考一下 js异步加载的4种方式,点评开始. <!DOCTYPE html> <htm ...
- web.xml完整配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.5.Accordion控件
accordion是另一个UI控件,能允许你将一组content加入相互分隔的.能够被浏览者的交互打开或关闭的panels中.因此,它大多数的content在初始化的时候是隐藏的,很像tabs控件.每 ...
- PHP操作Memcache基本函数的方法
Memcache基本函数. Memcache ― Memcache类 Memcache::add ― 增加一个条目到缓存服务器 Memcache::addServer ― 向连接池中添加一个memca ...
- Asp.net Vnext Filters
ASP.NET MVC 提供Filters(筛选器)之前或之后调用操作方法执行筛选逻辑,和AOP面向切面编程一样. 本文已经同步到<Asp.net Vnext 系列教程 >中] 本章主要介 ...