2011-08-10 169 views
1

我有以下代碼:Ç不兼容的類型錯誤

typedef unsigned char some_type[6]; 

int main() { 
     some_type some_var1; 
     some_type some_var2; 
     some_var1 = some_var2; 
     return 0; 
} 

,當我嘗試編譯它,我收到以下錯誤信息:

incompatible types when assigning to type 'some_type' from type 'unsigned char *' 

爲什麼這是?這兩個變量是完全相同的類型?我能做些什麼來使它工作?我無法更改typedef,因爲它是我使用的API的一部分。

回答

5

你不能像這樣給對方分配數組。如果這些字符串,使用的strcpy:

strcpy(some_var1, some_var2); 

如果沒有,使用的memcpy:

memcpy(&some_var1, &some_var2, sizeof (some_type)); 
4

不能以這種方式複製數組。通常的複製方法是使用memcpy

0

您應該使用memcpy,因爲C並不真的支持這種方式複製結構。

memcpy(&some_var1, &some_var2, sizeof(some_var)); 
1

您可以在一個陣列不能分配給其他因爲數組衰變不斷的指針。此外,你可能不想將一個數組的地址複製到另一個變量中。您需要使用memcpy之類的東西。