我有两个结构,与计算出一个沉吟平均,这样的简化版本值:访问结构成员就好像它们是单个数组?
typedef struct
{
int v_move, v_read, v_suck, v_flush, v_nop, v_call;
} values;
typedef struct
{
int qtt_move, qtt_read, qtt_suck, qtd_flush, qtd_nop, qtt_call;
} quantities;
然后我用它们来计算:
average = v_move*qtt_move + v_read*qtt_read + v_suck*qtt_suck + v_flush*qtd_flush + v_nop*qtd_nop + v_call*qtt_call;
每一个现在,他们我需要包含另一个变量。现在,比如,我需要包括v_clean
和qtt_clean
。我不能改变结构数组:
typedef struct
{
int v[6];
} values;
typedef struct
{
int qtt[6];
} quantities;
这将简化了很多我的工作,但他们需要的变量名是明确的API的一部分。
所以,我正在寻找一种方法来访问该结构的成员,也许使用sizeof()
,所以我可以把它们当作一个数组,但仍然保持API不可更改。这是保证所有的值都是int
,但我不能保证一个int
的大小。
写作的问题来到我的脑海......一个union
能胜任这项工作?是否有另一个聪明的方法来自动添加另一个成员的任务?
感谢, 贝乔
为了更好地帮助你,我们应该知道api是怎样的... – digEmAll 2011-04-02 17:05:09
@digEmAll从外部开始,应该让程序员保持旧代码的运行。该代码使用如下行:v.v_move = 1。这不能打破。 – 2011-04-02 17:08:58
有点复杂,但你可以迭代结构域...看看[这个答案](http://stackoverflow.com/questions/1784782/is-there-any-way-to-loop-through-a-struct -with-elements-of-diferent-types-in-c/1785699#1785699) – digEmAll 2011-04-02 17:19:20