• 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# 判断一个文本文件的编码格式(转载)
    img图片加载出错处理(转载)
    C#中当程序的访问权限不足时,Directory.Exists和File.Exists方法不会抛出异常报错
    ajax上传文件以及实现上传进度条(转载)
    通过jQuery Ajax使用FormData对象上传文件 (转载)
    CMD命令查看当前电脑安装所有版本.NET Core SDK(转载)
    SQL Server聚合函数与聚合开窗函数 (转载)
    C#中,使用显式类型转换(int)和Math.Round方法,将浮点数转换为整数的区别
    SQLServer 窗口函数(转载)
    node-webkit教程(8)Platform Service之Clipboard
  • 原文地址:https://www.cnblogs.com/Robert-huge/p/5501239.html
Copyright © 2020-2023  润新知