typedef struct _FRAMEINFO {
unsigned int FrameNo : 30;
unsigned int FrameType:2;
}FRAMEINFO;
C#语言中本身就有结构的,
unsigned int是C语言中16位无符号的整形,在C#中没有这样的,你可以使用int代替。参考代码如下:
public struct Test
{
int FrameNo;
int FrameType;
public Test()
{
FrameNo = 2;
FrameType = 2;
}
}
跟你讲讲的我思路
首先我会想到这样:
struct FrameInfo
{
uint FrameNo =30u;
uint FrameType =2u;
}
可惜编译器会报错:结构体中不能包含实例字段初始化器
然后我在这样:
struct FrameInfo
{
uint FrameNo;
uint FrameType;
public FrameInfo()
{
FrameNo = 30u;
FrameType = 2u;
}
}
编译器也会报错:结构体不能包含显式的无参构造器
其实应该这样,用类:
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
class FrameInfo
{
uint FrameNo = 30u;
uint FrameType = 2u;
}
要提醒你的是,在C/C++中传递该结构可能是按指针传递。
在C#中你直接按默认方式,也就是按值传递就行了,因为class已是引用类型