2011-08-10 143 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之类的东西。