私は、他の構造体の一部を使って構造体を初期化するコードをC言語で記述しています。たとえば:構造体内の配列を別の配列で初期化する
//Original structure
struct
{
int foo1;
int foo2;
int foo3;
} orig_struct = {1,2,3};
//New structure
struct
{
int bar1;
int bar2;
} new_struct = {orig_struct.foo1, orig_struct.foo2};
私は、構造体のたくさんのためにこれをしなければならない、と初期化方法は、上記のコードは非常にきれいで読みやすいに見えるのです。明らかにするために、私は元の構造を支配していません。私はちょうどそれらからデータをキャプチャするために新しい構造を作成しています。
構造の一つは、大規模な配列を持っていたとき、私が問題に遭遇した:
//Original structure
struct
{
int foo1;
int foo2[50];
int foo3;
} orig_struct = {1,{2,3,etc},52}; //<--replace "etc" with 48 more int values
//New structure
struct
{
int bar1;
int bar2[50];
} new_struct = {orig_struct.foo1, XXX};
は、私がの配列内の値を持つ新しい構造で配列を初期化するとXXXを置き換えることができますものはあります元の構造?繰り返しますが、私は自分のコードにきれいで一貫した見た目を残したいので、中括弧の中に置いておくのが理想的です。私は手動で自分の中括弧内の配列の各要素を入力することができます知っている:
...
} new_struct = {orig_struct.foo1, {orig_struct.foo2[0],orig_struct.foo2[1],orig_struct.foo2[2],orig_struct.foo2[3],etc}
しかし、それはすぐに受け入れ難いなることができますなぜそれはかなり明白です。
ええ、私は現在memcpyメソッドを使用しています。確かに、それはひどいことではない。あなたが本当に他の方法がないということが正しいなら、私はそれを永久的なコードにしなければならないでしょう。 –