【发布时间】:2012-07-05 03:55:12
【问题描述】:
我有三个结构header、dataA 和dataB。 header 将确定将使用的结构。 dataA 和 dataB 具有几乎相同的结构(假设):
struct dataA
{
int intValue;
char reserved1[8];
float floatValue;
char reserved2[4];
short shortValue;
};
struct dataA
{
int intValue;
short shortValue;
char reserved[2];
float floatValue;
};
我想像这样打印它:
sprintf(outStr, "%i, %f, %s", p->intValue, p->floatValue, p->shortValue);
-- 或者--
sprintf(outStr, "%i, %f, %s", p.intValue, p.floatValue, p.shortValue);
如何声明p? (注意:dataA 和 dataB 的结构很大,但数据几乎相同,除了那些 保留 值。 )
我在想这样的事情:
void * p;
if (header->type==1)
p = (dataA*)(pData);
else if (header->type==2)
p = (dataB*)(pData);
// print all data here
注意:这里的pData 是一个指向我将被读取的(原始)数据的指针。我只需要那些非保留 值,而忽略保留 值。
【问题讨论】:
-
你能改变类型定义吗?