您的位置:程序门 -> .net技术 -> c#



谁帮忙转一下一个c++的一个union 到 c#


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


谁帮忙转一下一个c++的一个union 到 c#[已结贴,结贴人:shycinfo]
发表于:2007-09-10 18:11:05 楼主
c++中是:

typedef   union   tagrcv_minute_structex
{
struct{
time_t m_time;
float m_fprice;
float m_fvolume;
float m_famount;
};
rcv_eke_headex m_head;  
}rcv_minute_structex;

typedef   struct tagrcv_eke_headex
{
dword m_dwheadtag;
word m_wmarket;
char m_szlabel[10];
}rcv_eke_headex;
发表于:2007-09-10 20:05:581楼 得分:0
union这个东西...现在没人用了...

你试试直接用struct.
发表于:2007-09-10 20:57:462楼 得分:0
to:shrinerain(圣影雨)

我知道c#不用union了,但要和c++的dll交互的话,需要用c#来实现c++里面的union加struct的组合,哪位大哥可以用c#的struct来实现这段代码,内存要对齐,不然数据会出错.
发表于:2007-09-11 01:03:353楼 得分:17
union只是某一时刻要么是一种数据类型,要么是另外一种.

也就是说某一时刻这个union

要么是struct{
time_tm_time;
floatm_fprice;
floatm_fvolume;
floatm_famount;
};

要么是typedef   structtagrcv_eke_headex
{
dwordm_dwheadtag;
wordm_wmarket;
charm_szlabel[10];
}rcv_eke_headex;

你可以分别定义两个struct.

然后根据情况传递相应的那个struct过去.   所以我叫你直接用struct.
发表于:2007-09-11 09:01:354楼 得分:3
用bitconverter
发表于:2007-09-11 13:03:185楼 得分:0
用shrinerain(圣影雨)已经解决,但这样似乎就是效率相比稍微低了点.

同一个内存位置,可能放了两种数据,我现在做的就是先判断一下dwordm_dwheadtag值,如果不对,再用另外一个struct去读他并装入数据,给机器多了点负担.

c++里面他union好像就可以,如果dwordm_dwheadtag值,如果不对,用另外一个struct直接读就可以了,不用再把数据装一遍了.呵呵


快速检索

最新资讯
热门点击