C#如何封装C++嵌套结构体,是结构体里面嵌套了多个结构体

C++中的结构体:大结构体:struct{DWORDdwSize;DWORDdwGroupNum;DWORDdwAChanNum;DWORDdwDChanNum;DWOR... C++中的结构体:
大结构体:
struct{ DWORD dwSize;
DWORD dwGroupNum;
DWORD dwAChanNum;
DWORD dwDChanNum;
DWORD dwStartDChan;
BYTE byAnalogChanEnable[MAX_CHANNUM_V30];NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE_V40];NET_DVR_STREAM_MODE struStreamMode[MAX_CHANNUM_V30]; BYTE byRes2[20];}NET_DVR_IPPARACFG_V40, *LPNET_DVR_IPPARACFG_V40;

子结构体:
struct{ BYTE byEnable;
BYTE byProType;
BYTE byEnableQuickAdd;
BYTE byRes1;
BYTE sUserName[NAME_LEN];
BYTE sPassword[PASSWD_LEN];
BYTE byDomain[MAX_DOMAIN_NAME];
NET_DVR_IPADDR struIP;
WORD wDVRPort;
BYTE byRes2[34];}NET_DVR_IPDEVINFO_V31, *LPNET_DVR_IPDEVINFO_V31;

struct{ BYTE byGetStreamType;
BYTE byRes[3];
NET_DVR_GET_STREAM_UNION uGetStream;}NET_DVR_STREAM_MODE,*LPNET_DVR_STREAM_MODE;

我先贴出来第一层结构体和里面嵌套的两个小的结构体,小结构体里面嵌套的结构体就不贴了,其中 NET_DVR_IPADDR和 NET_DVR_GET_STREAM_UNION是子结构体里面用到的结构体。高手指教下,谢谢!
展开
 我来答
吾本大师
推荐于2017-10-13 · TA获得超过302个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:227万
展开全部
看你的定义里有数组,有Struct嵌套,给你的例子参考:C++: typedef struct{
BYTE ByteV[10];
} StructA;

typedef struct
{
BYTE ByteV[10];
StructA StructAs[20];

} StructB;

C#: [StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)]
public struct StructA
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
};

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct StructB
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;

[ MarshalAs( UnmanagedType.ByValArray, SizeConst=20)]
public StructA[] StructAs;
};

-手写的,仅供参考
团长你好吗
推荐于2017-09-03 · TA获得超过597个赞
知道小有建树答主
回答量:422
采纳率:20%
帮助的人:132万
展开全部
在Visual C++里添加如下程序:
struct A
{
    int a;
    struct B * b;
};

struct B
{
     int b;
     struct A * a;
};

struct C
{
     int c;
    struct B * b;
     struct A * a;
};

..........
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-11-25 · TA获得超过6416个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1431万
展开全部
看你的定义里有数组,有Struct嵌套,给你的例子参考:C++: typedef struct{
BYTE ByteV[10];
} StructA;

typedef struct
{
BYTE ByteV[10];
StructA StructAs[20];

} StructB;

C#: [StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)]
public struct StructA
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
};

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct StructB
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;

[ MarshalAs( UnmanagedType.ByValArray, SizeConst=20)]
public StructA[] StructAs;
};

-手写的,仅供参考
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式