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++(结构体内对象指定大小)的更多相关文章

  1. struct结构体内存大小

    一. 基本原则 1. struct中成员变量的声明顺序,与成员变量对应的内存顺序是一致的: 2. struct本身的起始存储地址必须是成员变量中最长的数据类型的整倍数,注意是最长的数据类型,而不是最长 ...

  2. 【APUE】Chapter17 Advanced IPC & sign extension & 结构体内存对齐

    17.1 Introduction 这一章主要讲了UNIX Domain Sockets这样的进程间通讯方式,并列举了具体的几个例子. 17.2 UNIX Domain Sockets 这是一种特殊s ...

  3. Ehcache计算Java对象内存大小

    在EHCache中,可以设置maxBytesLocalHeap.maxBytesLocalOffHeap.maxBytesLocalDisk值,以控制Cache占用的内存.磁盘的大小(注:这里Off ...

  4. 计算Java对象内存大小

    摘要 本文以如何计算Java对象占用内存大小为切入点,在讨论计算Java对象占用堆内存大小的方法的基础上,详细讨论了Java对象头格式并结合JDK源码对对象头中的协议字段做了介绍,涉及内存模型.锁原理 ...

  5. [C/C++] 结构体内存对齐用法

    一.为什么要内存对齐 经过内存对齐之后,CPU的内存访问速度大大提升; 内存空间按照byte划分,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内 ...

  6. jvm内存结构及对象漫谈(较全)

    最近想整理一下GC相关的知识和经验,在整理之前先整理一下jvm的内存结构,后续会持续更新. jvm内存结构重要由两部分组成:线程共享区域与线程私有区域,如下图所示: 其中方法区和堆为线程共享区域,栈与 ...

  7. [C/C++] 结构体内存对齐:alignas alignof pack

    简述: alignas(x):指定结构体内某个成员的对齐字节数,指定的对齐字节数不能小于它原本的字节数,且为2^n; #pragma pack(x):指定结构体的对齐方式,只能缩小结构体的对齐数,且为 ...

  8. 如何精确地测量java对象的大小-底层instrument API

    转载: 如何精确地测量java对象的大小-底层instrument API 关于java对象的大小测量,网上有很多例子,大多数是申请一个对象后开始做GC,后对比前后的大小,不过这样,虽然说这样测量对象 ...

  9. 浅谈C/C++结构体内存分配问题

    .wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertica ...

随机推荐

  1. demo02TextView

    main.xml----- /layout/activity_main.xml <RelativeLayout xmlns:android="http://schemas.androi ...

  2. docker 批量删除容器

     docker rm `docker ps -a |awk '{print $1}' | grep [0-9a-z]`

  3. spark on mesos 两种运行模式

    spark on mesos 有粗粒度(coarse-grained)和细粒度(fine-grained)两种运行模式,细粒度模式在spark2.0后开始弃用. 细粒度模式 优点 spark默认运行的 ...

  4. 夺命雷公狗---DEDECMS----10dedecms双标签

    双标签基本语法如下: {dede:标签名 参数名=“值” 参数名2=“值”...} 内容...... {/dede} 我们先来查看下手册,如下所示: 我们先来用一个channel的标签来做实例,因为c ...

  5. C# 文件读取(二)

    将我的电脑中的文件夹信息显示到TreeView控件上. 方法很多种,下面这种方法添加了我的文档. public partial class Form1 : Form { public Form1() ...

  6. NOIP201208同余方程

    NOIP201208同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一行,包含两个正整数a, b,用一个空格隔开. 输出格式 输出只有一行,包含 ...

  7. NOIP200505谁拿了最多的奖学金

    NOIP200505谁拿了最多的奖学金 Description 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1)      院士奖学金,每人8000元,期 ...

  8. android 项目学习随笔十七(ListView、GridView显示组图)

    ListView.GridView显示组图,处理机制相同 <?xml version="1.0" encoding="utf-8"?> <Li ...

  9. 和菜鸟一起学linux总线驱动之初识spi驱动数据传输流程【转】

    转自:http://blog.csdn.net/eastmoon502136/article/details/7921846 对于SPI的一些结构体都有所了解之后呢,那么再去瞧瞧SPI的那些长见的操作 ...

  10. 非常好!!!【从头开始写操作系统系列】实现一个-GDT(1)【转】

    转自:http://blog.csdn.net/luoyhang003/article/details/47338019 权声明:本文为博主原创文章,未经博主允许不得转载.(文章来源:http://b ...