2013-01-21 82 views
-3

我想將結構x複製到另一個具有嵌套x的結構y。複製到嵌套結構在C

例如:

#define DATASIZE 128 

typedef struct { 
     char data[DATASIZE];  
} x_TYPE; 


typedef struct { 
    int    number; 
    x_TYPE   nested_x;  
    enum boolean  error;  
} y_TYPE; 

/* ---- Values for the type field in xy_union ---- */ 
#define TYPE_IS_X 0; 
#define TYPE_IS_Y 1; 

typedef struct { 
    union {      /* structure containing x_object */ 
      x_TYPE  x_object; /*  or y_object as a union */ 
      y_TYPE  y_object; 
    } u; 
int type;   /*One of: TYPE_IS_X, TYPE_IS_Y */ 

} XY_TYPE; 

這是怎麼了我目前複製:

copyXY(XY_TYPE *xx) 
{ 
    XY_TYPE *yy; /* assume this is allocated already */ 


    yy->u.y_object.nested_x = *xx; /* ERROR LINE */ 


    return 0; 
} 

我得到一個編譯器錯誤:錯誤:不兼容的類型分配從類型類型「x_TYPE「時XY_TYPE 」。

請讓我知道是否有人知道爲什麼會發生這種情況。

+0

我不明白你想要做什麼。 – Dariusz

+0

你在整個地方繼續使用「x」的方式令人困惑。 – cnicutar

+2

你的僞代碼是**可怕的**(例如,沒有定義類型'x';有一個'x_TYPE',但它是相同的嗎?還有'y_object',我假設它是類型'y_TYPE'而不是'y'不包含'x_object')。如果您向我們提供*實際*代碼來證明您認爲不應得到的錯誤,我們可能會提供幫助。 –

回答

2

這是你在找什麼?

XY_TYPE *yy; /* assume this is allocated already */ 

void copyXIntoYY(XY_TYPE *xx) 
{ 
    yy->u.y_object.nested_x = xx->u.x_object; 
} 

從問題中不清楚你想要做什麼。