!C#模拟C的柔性数组运行出错?怎么处理
紧急求助!!C#模拟C的柔性数组运行出错?怎么办
如题,我定义了这样一个结构体:
请指导一下,我要如何做呢?
------解决方案--------------------
size=0,不知如何去布局 STAGINFOPARAM 结构体
------解决方案--------------------
出错就是表示0不允许.
以前我也遇到这个问题,不过用个笨办法处理了.就是结构里这个项个数有1,2,3,4,5种,然后就建了5个结构,
如
public struct SREADINVENTORYTAGINFORSPPARAM1
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
public struct SREADINVENTORYTAGINFORSPPARAM2
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
...
如题,我定义了这样一个结构体:
- C# code
[StructLayout(LayoutKind.Sequential)] public struct STAGINFOPARAM { byte metaData; UInt16 uEPCLength; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] Byte[] ucaEPC; UInt16 uTagCRC; }; [StructLayout(LayoutKind.Sequential)] public struct SREADINVENTORYTAGINFORSPPARAM { Byte ucStatus; UInt16 uMetadataFlag; Byte ucOption; Byte ucTagCount; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0)] // 如这里改为 SizeConst = 1 运行就不会出错 STAGINFOPARAM[] tagInfo; }; Int32 nSize2 = Marshal.SizeOf(typeof(SREADINVENTORYTAGINFORSPPARAM)); // 一运行到这里就出错? MessageBox.Show(nSize2.ToString());
请指导一下,我要如何做呢?
------解决方案--------------------
size=0,不知如何去布局 STAGINFOPARAM 结构体
------解决方案--------------------
出错就是表示0不允许.
以前我也遇到这个问题,不过用个笨办法处理了.就是结构里这个项个数有1,2,3,4,5种,然后就建了5个结构,
如
public struct SREADINVENTORYTAGINFORSPPARAM1
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
public struct SREADINVENTORYTAGINFORSPPARAM2
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
...