C++语言转C#的一个难题. struct C_Ctl{fixed byte Share[CHAN_DIRS]; // flags and ptrs to read & write memory}; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 [StructLayout(LayoutKind.Sequential,Pack=1)] unsafe struct Chan { IntPtr BuffEmpty; // Buffer is empty IntPtr BuffFull; // Buffer has data in it fixed byte data[MAX_PACKET]; // The data, 1st byte is len } [StructLayout(LayoutKind.Sequential, Pack = 1)] unsafe struct C_Ctl { fixed byte Share[CHAN_DIRS * 263]; // flags and ptrs to read & write memory public Chan GetShareChan(int index) { fixed (byte* p = Share) { return *(Chan*)(p + index*sizeof(Chan)); } } } Chan *Share[CHAN_DIRS];代表一连串Chan结构的地址,简单可以转换为:Chan[] Share = new Share[CHAN_DIRS]应用地址时候可以采用:unsafe{ Chan *pChan = &Share[i]; // i : 0 ~ CHAN_DIRS - 1 pChan->BuffEmpty = ... } 窗体的Load事件 一道头痛的面试题 【第一次发帖求助】想获取本机的外网地址,来实现tcp打洞 VS2003 C# 如何编写SQL数据库更新代码? VS2008 WinForm水晶报表加载失败(跪求) Web窗体无法浏览 <web.config>设置?(顶者有分) 两个关于网页的问题(内详)! 连接ms sqlserver的初级问题 我在webForm上可以弹出对话框,但是点击确定和取消都执行??为什么?? 开了好几个帖子也没有答案,高手帮忙啊,解决后再加分 请教一个读取值的问题
unsafe struct Chan
{
IntPtr BuffEmpty; // Buffer is empty
IntPtr BuffFull; // Buffer has data in it
fixed byte data[MAX_PACKET]; // The data, 1st byte is len
} [StructLayout(LayoutKind.Sequential, Pack = 1)]
unsafe struct C_Ctl
{
fixed byte Share[CHAN_DIRS * 263]; // flags and ptrs to read & write memory
public Chan GetShareChan(int index)
{
fixed (byte* p = Share)
{
return *(Chan*)(p + index*sizeof(Chan));
}
}
}
Chan[] Share = new Share[CHAN_DIRS]应用地址时候可以采用:
unsafe
{
Chan *pChan = &Share[i]; // i : 0 ~ CHAN_DIRS - 1
pChan->BuffEmpty = ...
}